Je recherche un moyen sûr et rapide de supprimer tous les messages d'un type de message personnalisé. L'utilisation de 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 temporisation).
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?
custom-post-types
database
performance
Marcus McLean
la source
la source
wpdb
classe. Méthode préférée et "la façon WP" pour travailler directement avec la base de données. Faites-nous savoir si vous avez besoin d'aide pour cette requête. Je peux poster une réponse complète plus tard si nécessaire codex.wordpress.org/Class_Reference/wpdb'fields' => 'ids',
inget_posts
pour obtenir uniquement l'identifiant de publication. C'est tout ce dont vous avez besoin et cela accélérera considérablement votre requêtewp_cron()
Réponses:
Vous pouvez supprimer tous les messages via
$wpdb
ou utilisez cette requête remplacez-le par {{votre CPT}} par votre type de publication personnalisé
la source
wp_term_taxonomy
. Il semble que la fonction que vous recherchez pour mettre à jour le nombre soitwp_update_term_count($terms, $taxonomy, false)
ouwp_update_term_count_now($terms, $taxonomy)
définie danswp-includes/taxonomy.php
.Vous pouvez supprimer toutes les publications d'un type de publication personnalisé dans diverses méthodes, mais ici, je vais vous montrer comment procéder sans utiliser de requête SQL. Ici, par exemple, notre type de message est produit
Voir le tutoriel complet Référence ici
la source
get_posts()
etwp_delete_post()
pour chaque message retourné 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 temporisation)." Vous utilisez les deux fonctions qu'il ne veut pas utiliser.