web-dev-qa-db-de.com

Post-ID in WordPress-Aktion erhalten?

Ich habe diesen Code

add_action( 'delete_post', 'my_delete_function' );
 function my_delete_function() { 
   global $wpdb;
   $wpdb->query("
    DELETE FROM wp_votes WHERE post=".$thePostID."
;);
 }

Wie kann ich die ID des zu löschenden Beitrags ermitteln?

Funktioniert dies auch dann noch, wenn mehrere Posts im Admin gelöscht wurden?

1
shammer

Ich habe es nicht getestet und biete Ihnen daher zwei Möglichkeiten: Verwenden Sie in einer Schleife Folgendes:

$post_id = get_the_ID();

Verwenden Sie außerhalb einer Schleife Folgendes:

global $wp_query;
$post_id = $wp_query->post->ID;

Oder:

global $post;
$post_id = $post->ID

Oder Sie können die Beitrags-ID in einer Funktion übergeben, ähnlich wie

function my_function($post_id){
    // code
}
2
Asko

Fügen Sie Ihrer Funktion einen Parameter hinzu, dem die ID des aktuell gelöschten Posts übergeben wird.

add_action( 'delete_post', 'my_delete_function' );
function my_delete_function( $post_id /* <- ID of post being deleted */ )
{ 
    global $wpdb;
    $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}_votes WHERE post = %d", $post_id ) );
}

Durch die Verwendung einer externen Variablen (wie z. B. einer globalen in @ Askos Antwort) wird die Garantie aufgehoben, dass der Beitrag , der tatsächlich gelöscht wird , derjenige ist, an dem Sie in Ihrem Blog arbeiten Funktion - es könnte entweder komplett ausfallen, oder sogar Daten für den falschen Beitrag löschen!

3
TheDeadMedic