it-swarm.dev

Vlastní taxonomie nesprávně počítat revize?

( Poznámka moderátora: Původní název byl „Počet mých vlastních taxonomií je nesprávný; počítá se revize“

Dostal se do toho někdo? Přidal jsem dvě vlastní taxonomie a sloupec count tabulky wp_term_taxonomy se nastavuje nesprávně. Zdá se, že kromě publikovaného příspěvku počítá revize.

Trochu jsem se pohupoval do jádra WordPressu, ale to je obrovská bestie a upřímně sotva vím, kde začít hledat to, co aktualizuje count pro tuto tabulku.

1
jeffbyrnes

Ahoj @ berkleebassist :

Je těžké ověřit váš problém bez administrátorského přístupu na vaše stránky a vaši databázi, ale mohu vám dát nějaký směr, který by vám mohl pomoci.

V /wp-includes/taxonomy.php jsou dvě funkce, které aktualizují počet pojmů taxonomie: wp_update_term_count_now() a _update_post_term_count(). Jsou umístěny (ve WordPress v3.0.1) na řádku 2454 a řádek 2049, resp. Oba volají akční háček 'edited_term_taxonomy' právě poté, co aktualizovali počet. Obě funkce posílají stejné dva parametry: $term a $taxonomy, takže můžete s tímto programem zacházet jako s jedním háčkem programu.

Zde je Shell funkce, kterou můžete zkopírovat do souboru functions.php vašeho motivu, abyste aktualizovali počet, stačí přidat SQL, které UPDATE počet, jak chcete, aby byl aktualizován:

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);
}

Dejte nám vědět, pokud potřebujete konkrétnější směr o psaní příkazu SQL.

Také zde je jízdenka, která pojednává o něčem podobném; může se týkat:

4
MikeSchinkel

Ok, má SQL dotaz vypracován, ale nový uzel: Mám dvě taxonomie, a teď se snažím přijít na to, jak spustit tuto funkci se správným dotazem pro každou z nich. Zde jsou všechny mé dotazy:

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'

A druhá:

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'

Každý z nich nastavuje správný počet příspěvků, ale můžu vždy oba dotazy spouštět vždy? Nebo existuje způsob, jak mohu vystřelit jen jednu nebo druhou, aby se snížilo zatížení MySQL?

1
jeffbyrnes