Je recherche un moyen sûr et rapide de supprimer tous les messages d'un type de message personnalisé. Utiliser get_posts()
et wp_delete_post()
pour chaque message renvoyé ne fonctionne pas; ce n'est pas assez rapide en raison de la quantité de requêtes de base de données impliquées (erreur de dépassement de délai).
De préférence, je recherche une seule requête de base de données à exécuter qui supprime toutes les publications qui sont d'un type de publication personnalisé. Des pensées?
Vous pouvez supprimer tous les messages via $wpdb
DELETE FROM wp_posts WHERE post_type='post_type';
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT id FROM wp_posts)
ou utilisez cette requête, remplacez-la par {{votre CPT}} par votre type de message personnalisé
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b
ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c
ON (a.ID = c.post_id)
WHERE a.post_type = '{{your CPT}}';
Vous pouvez supprimer toutes les publications d'un type de publication personnalisé selon différentes méthodes, mais je vais vous montrer ici comment procéder sans utiliser la requête SQL. Ici, par exemple, notre type de message est product
$allposts= get_posts( array('post_type'=>'product','numberposts'=>-1) );
foreach ($allposts as $eachpost) {
wp_delete_post( $eachpost->ID, true );
}