it-swarm.com.de

Benutzerdefinierte Taxonomien, die Revisionen falsch zählen?

( Anmerkung des Moderators: Der ursprüngliche Titel lautete "Die Anzahl meiner benutzerdefinierten Taxonomie ist falsch; es werden Revisionen gezählt".

Hat jemand schon einmal darauf gestoßen? Ich habe zwei benutzerdefinierte Taxonomien hinzugefügt und die Spalte count der Tabelle wp_term_taxonomy wurde falsch festgelegt. Neben dem veröffentlichten Beitrag werden anscheinend auch Revisionen gezählt.

Ich habe mich im WordPress-Kern umgesehen, aber das ist ein riesiges Biest und ich weiß ehrlich gesagt kaum, wo ich anfangen soll, nach Updates für die count für diese Tabelle zu suchen.

1
jeffbyrnes

Hi @ berkleebassist :

Es ist schwierig, Ihr Problem zu überprüfen, ohne dass der Administrator Zugriff auf Ihre Website und Ihre Datenbank hat. Ich kann Ihnen jedoch eine Anleitung geben, die möglicherweise hilfreich ist.

Es gibt zwei Funktionen in /wp-includes/taxonomy.php, die die Anzahl der Taxonomiebegriffe aktualisieren: wp_update_term_count_now() und _update_post_term_count(). Sie befinden sich (in WordPress v3.0.1) in Zeile 2454 bzw. Zeile 2049. Beide rufen einen Aktions-Hook 'edited_term_taxonomy' auf, sobald sie die Anzahl aktualisiert haben. Beide Funktionen senden denselben beiden Parametern einen $term und einen $taxonomy, sodass Sie dies als nur einen zu programmierenden Hook behandeln können.

Hier ist eine Shell einer Funktion, die Sie in die functions.php-Datei Ihres Themas kopieren können, um die Anzahl zu aktualisieren. Fügen Sie einfach die SQL hinzu, mit der die Anzahl auf den neuesten Stand gebracht wird:

add_action('edited_term_taxonomy','yoursite_edited_term_taxonomy',10,2);
function yoursite_edited_term_taxonomy($term,$taxonomy) {
  global $wpdb;
  $sql = "...set this to UPDATE taxonomy term count how you want...";
  $wpdb->query($sql);
}

Lassen Sie mich wissen, wenn Sie genauere Anweisungen zum Schreiben des SQL-Befehls benötigen.

Hier ist auch ein Trac-Ticket, in dem etwas Ähnliches besprochen wird. es kann verwandt sein:

4
MikeSchinkel

Ok, eine SQL-Abfrage hat funktioniert, aber ein neuer Knick: Ich habe zwei Taxonomien und versuche jetzt herauszufinden, wie diese Funktion mit der richtigen Abfrage für jede ausgeführt wird. Hier sind meine Fragen:

UPDATE wp_cln_term_taxonomy tt1
SET count =
(SELECT count(p.ID) FROM  wp_cln_term_relationships tr
LEFT JOIN wp_cln_posts p
   ON (p.ID = tr.object_id AND p.post_type = 'examples' AND p.post_status = 'publish')
WHERE tr.term_taxonomy_id = tt1.term_taxonomy_id)
WHERE tt1.taxonomy = 'example-cats'

Und der zweite:

UPDATE wp_cln_term_taxonomy tt1
SET count =
(SELECT count(p.ID) FROM  wp_cln_term_relationships tr
LEFT JOIN wp_cln_posts p
   ON (p.ID = tr.object_id AND p.post_type = 'ideas' AND p.post_status = 'publish')
WHERE tr.term_taxonomy_id = tt1.term_taxonomy_id)
WHERE tt1.taxonomy = 'idea-cats'

Diese stellen jeweils die richtige Anzahl von Posts ein. Kann ich jedoch immer beide Abfragen gleichzeitig ausführen? Oder gibt es eine Möglichkeit, nur das eine oder andere auszulösen, um die Belastung von MySQL zu verringern?

1
jeffbyrnes