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?
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
}
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!