Ich suche nach einer sicheren und schnellen Möglichkeit, alle Beiträge eines benutzerdefinierten Beitragstyps zu löschen. Die Verwendung von get_posts()
und wp_delete_post()
für jeden zurückgegebenen Beitrag funktioniert nicht. Es ist nicht schnell genug, da es sich um eine Vielzahl von Datenbankabfragen handelt (Timeout-Fehler).
Vorzugsweise suche ich nach einer einzelnen Datenbankabfrage, die alle Beiträge eines benutzerdefinierten Beitragstyps löscht. Irgendwelche Gedanken?
custom-post-types
database
performance
Marcus McLean
quelle
quelle
wpdb
Unterricht anzuschauen. Bevorzugte Methode und "der WP-Weg" für die direkte Arbeit mit der DB. Lassen Sie uns wissen, wenn Sie Hilfe bei dieser Anfrage benötigen. Ich kann später bei Bedarf eine vollständige Antwort posten. Codex.wordpress.org/Class_Reference/wpdb'fields' => 'ids',
inget_posts
, um nur die Post-ID zu erhalten. Dies ist alles, was Sie brauchen, und es wird Ihre Anfrage erheblich beschleunigenwp_cron()
Antworten:
Sie können alle Beiträge über löschen
$wpdb
oder verwenden Sie diese Abfrage, und ersetzen Sie sie durch {{Ihr CPT}} durch Ihren benutzerdefinierten Beitragstyp
quelle
wp_term_taxonomy
. Es scheint, als ob die Funktion, nach der Sie suchen, um die Anzahl zu aktualisieren, definiertwp_update_term_count($terms, $taxonomy, false)
oderwp_update_term_count_now($terms, $taxonomy)
definiert istwp-includes/taxonomy.php
.Sie können alle Beiträge eines benutzerdefinierten Beitragstyps auf verschiedene Arten löschen. Hier werde ich Ihnen jedoch zeigen, wie Sie dies ohne Verwendung einer SQL-Abfrage tun können. Hier ist beispielsweise unser Beitragstyp Produkt
Die vollständige Referenz zum Tutorial finden Sie hier
quelle
get_posts()
undwp_delete_post()
für jeden zurückgegebenen Beitrag funktioniert nicht; es ist nicht schnell genug, da es sich um eine Vielzahl von Datenbankabfragen handelt (Timeout-Fehler)." Sie verwenden die beiden Funktionen, die er nicht verwenden möchte.