So aktualisieren Sie das Zählfeld von WordPress-Taxonomien (Kategorien/Tags) nach dem Massenimport/Löschen

Lesezeit: 3 Minuten

Wie aktualisiere ich das Zählfeld von WordPress-Taxonomien (Kategorien/Tags) nach dem Massenimport/Löschen?

Verwandte Fragen:

WordPress › Support » Anzahl der Kommentare und Kategorien nach dem Import korrigieren
http://wordpress.org/support/topic/fix-comment-and-category-counts-after-import

Dieses SQL hilft:

UPDATE wp_term_taxonomy SET count = (
SELECT COUNT(*) FROM wp_term_relationships rel 
    LEFT JOIN wp_posts po ON (po.ID = rel.object_id) 
    WHERE 
        rel.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id 
        AND 
        wp_term_taxonomy.taxonomy NOT IN ('link_category')
        AND 
        po.post_status IN ('publish', 'future')
)

  • Funktioniert einwandfrei und sehr schnell

    – David Hilditch

    23. November 2014 um 15:16 Uhr

  • Ich musste nur „inherit“ zum letzten post_status-Array hinzufügen, um die Begriffe für Anhänge korrekt zu zählen

    – Ziki

    13. Juni 2018 um 2:54 Uhr

  • Hat bei mir nicht funktioniert, aber ich verwende die Taxonomie mit Medien-Uploads. Ich bin mir nicht sicher, ob das wichtig ist.

    – Miles Pfefferle

    9. Januar 2020 um 3:10 Uhr

  • Dies funktionierte für mich für WooCommerce-Attribute, aber nicht für Produktkategorien. Die WP-CLI-Antwort hat ihnen dabei geholfen.

    – Melebios

    16. September 2021 um 14:17 Uhr

Ein WordPress-kompatiblerer Weg wäre die Verwendung von wp_update_term_count_now (https://developer.wordpress.org/reference/functions/get_terms/)

Beispiel:

$update_taxonomy = 'my_taxonomy';
$get_terms_args = array(
        'taxonomy' => $update_taxonomy,
        'fields' => 'ids',
        'hide_empty' => false,
        );

$update_terms = get_terms($get_terms_args);
wp_update_term_count_now($update_terms, $update_taxonomy);

  • Ich bekomme das einfach nicht zum Laufen. “Argument Nr. 2 sollte ein Array sein”

    – Robert Andrews

    16. Oktober 2018 um 10:58 Uhr

  • Die Funktionsreferenz besagt, dass es sich um einen String handeln muss: developer.wordpress.org/reference/functions/… wp_update_term_count_now( array $terms, string $taxonomie )

    – Martin von WP-Stars.com

    17. Oktober 2018 um 14:32 Uhr


  • Aber ich habe Ihren obigen Code buchstäblich verwendet und den Taxonomienamen ausgetauscht.

    – Robert Andrews

    17. Oktober 2018 um 19:02 Uhr

  • @RobertAndrews: Was passiert, wenn Sie den obigen Code so verwenden, wie er ist, ohne den Taxonomienamen auszutauschen? Und Sie könnten ein “Echo” vor “wp_update_term_count_now” setzen. In Ihrem System ändert sich nichts, aber der Code sollte ohne Fehler funktionieren und “1” sollte zurückgegeben werden.

    – Martin von WP-Stars.com

    18. Oktober 2018 um 21:30 Uhr

  • @Martin-from-WP-Stars-com „my_taxonomy“ verlassen und voranstellen wp_update_term_count_now mit echo löst nicht das Problem “Argument Nr. 2 sollte ein Array sein”. Die Zeile wp_update_term_count_now wirft also auch “versucht, die Eigenschaft eines Nicht-Objekts zu erhalten”. wp_update_term_count_now erwartet Ihr $update_taxonomy ein Array sein.

    – Robert Andrews

    19. Oktober 2018 um 9:35 Uhr

Die Antwort von @kaorukobo funktioniert gut. Ich brauchte jedoch etwas mehr Anpassung, um alle Bedingungen für ein CPT automatisch zu aktualisieren … insbesondere ein WooCommerce-Produkt-CPT mit mehreren benutzerdefinierten Taxonomien …

Im Folgenden wurden alle Taxonomien für das Produkt CPT aktualisiert.

UPDATE wp_term_taxonomy tt
    SET count =
    (SELECT count(p.ID) FROM  wp_term_relationships tr
    LEFT JOIN wp_posts p
    ON (p.ID = tr.object_id AND p.post_type="product" AND p.post_status="publish")
    WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
)

  • Dies funktionierte perfekt für mich auf meiner Woocommerce-Website. Ich habe manuell Kategorien für Beiträge festgelegt. Dieses nette Stück Code funktionierte gut, nachdem ich diesen Einfügungen nachgegangen war. Danke (und danke @kaorukobo)

    – Sim2K

    17. September 2017 um 1:47 Uhr

  • Das funktioniert bei mir auch perfekt nach dem Import einiger Produkteigenschaften (Begriffe) ohne WordPress-Funktionen. Danke!

    – NVO

    9. Mai 2018 um 14:36 ​​Uhr

  • Dies hat die WooCommerce-Produktkategorien für mich nicht korrigiert. Die WP-CLI-Antwort hat ihnen dabei geholfen.

    – Melebios

    16. September 2021 um 14:18 Uhr

Meiner Meinung nach ist dies der beste Weg, dies zu tun, indem man verwendet WP-CLI. Dafür gibt es einen Befehl:

$ wp term recount category

Die Dokumentation finden Sie hier: https://developer.wordpress.org/cli/commands/term/recount/

905440cookie-checkSo aktualisieren Sie das Zählfeld von WordPress-Taxonomien (Kategorien/Tags) nach dem Massenimport/Löschen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy