web-dev-qa-db-fra.com

Obtenir post id en action wordpress?

J'ai ce code

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

Comment puis-je obtenir l'id du message en cours de suppression?

En outre, cela fonctionnera-t-il encore si plusieurs messages sont supprimés dans l'administrateur?

1
shammer

Je n'ai pas testé, je vous propose donc deux possibilités. Dans une boucle, utilisez les éléments suivants:

$post_id = get_the_ID();

En dehors d'une boucle, utilisez ce qui suit:

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

Ou:

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

Ou vous pouvez transmettre l'ID de publication dans une fonction, un peu comme

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

Ajoutez un paramètre à votre fonction, auquel sera attribué l'identifiant de la publication en cours de suppression.

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 ) );
}

L'utilisation de toute variable externe (comme une variable globale dans la réponse de @ Asko) supprime toute garantie que la publication effectivement supprimée soit celle sur laquelle vous travaillez fonction - il pourrait soit échouer complètement, ou même supprimer des données pour le mauvais post!

3
TheDeadMedic