web-dev-qa-db-fra.com

Comment mieux supprimer Orphan wp_postmeta

Je suis en train d'effectuer des requêtes assez complexes impliquant des métadonnées à partir d'un type de publication personnalisé. Malheureusement, si des messages sont supprimés, les métadonnées restent en place, ce qui complique les choses car je les compte.

Je me demandais quelle était la meilleure façon de supprimer les métadonnées Orphan dans le cas où le message serait supprimé.

Devrais-je inclure une fonction qui supprime la base de données via $ wpdb?

J'ai trouvé une requête SQL qui fait exactement cela, mais je ne sais pas comment la formater.

DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL

Je l'ai essayé dans phpmyadmin sur une copie de sauvegarde de ma base de données, mais en vain.

2
mantis

Cet extrait suffit, utilisez-le avec $wpdb. Dans ce cas, j'utiliserais:

<?php
add_action( 'before_delete_post', 'my_func' );
function my_func( $postid ){

// We check if the global post type isn't ours and just return
global $post_type;   
if ( $post_type != 'my_custom_post_type' ) return;

// My custom stuff for deleting my custom post type here
}
?>

Source

0
JMau