Opțiunea "category_children" lipsește la crearea dinamică de categorii prin intermediul unui plugin

18 apr. 2011, 22:10:36
Vizualizări: 1.17K
Voturi: 2

Am identificat sursa unei erori fatale care apare când un site nou este previzualizat imediat după instalarea și activarea pluginului la care lucrez.

Problema pare să fie că elementul "category_children" din tabelul de opțiuni nu este creat.

Interesant este că două acțiuni determină WordPress să creeze opțiunea category_children. Acestea sunt: (1) Activarea unei teme care conține cod pentru crearea de categorii și (2) Simpla accesare a managerului de categorii.

Dacă fac oricare dintre acestea, după activarea pluginului, opțiunea category_children este creată (probabil datorită unor verificări în activarea temei sau încărcarea edit-tags.php) și eroarea dispare.

Iată codul pe care îl folosesc în pluginul meu pentru a crea categoriile (se execută doar la activarea pluginului):

        if(!get_cat_ID('nofollow')){wp_create_category('nofollow',1);}
        if(!get_cat_ID('noindex')){wp_create_category('noindex',1);}

Ce omit? Trebuie să apelez explicit o metodă pentru ca WordPress să genereze array-ul de opțiuni category_children pentru aceste elemente?

ACTUALIZARE: Datorită ajutorului lui scribu mai jos asupra cauzei acestei erori, am descoperit că remediul PARȚIAL pentru această problemă este să plasez această linie imediat după ce apelurile mele wp_create_category() sunt finalizate:

clean_term_cache('','category');

Totuși, acest lucru nu funcționează atunci când este apelat în același plugin care creează categoriile. A trebuit să o plasez într-un plugin separat care este activat independent de pluginul care creează categoriile mele.

0
Toate răspunsurile la întrebare 2
8

Acesta este un bug cunoscut (și destul de urât) în codul de caching al ierarhiei taxonomiilor:

http://core.trac.wordpress.org/ticket/14485

Pe scurt, trebuie să forțezi o reîmprospătare prin ștergerea opțiunii.

19 apr. 2011 20:36:20
Comentarii

Salut Scribu, mulțumesc pentru postare. +1 pentru asta! M-am smuls de păr încercând să-mi dau seama. Voi verifica raportul de bug și soluția sugerată de tine.

Scott B Scott B
19 apr. 2011 20:42:20

@Scribu: dacă opțiunea nu există (verificat prin vizualizarea options.php) soluția de ștergere manuală funcționează în continuare?

Scott B Scott B
19 apr. 2011 20:45:36

Doar pentru a fi clar, trebuie doar să apelez delete_option("category_children") după ce am creat categoriile cu părinte? Scuze, dar nu am văzut o referire la soluție în comentariile de pe bug track.

Scott B Scott B
19 apr. 2011 21:06:09

Actualizare: soluția este să plasezi această linie după inserarea categoriilor > clean_term_cache('','category');

Scott B Scott B
19 apr. 2011 21:39:55

Actualizare 2: Se pare că există o problemă atunci când apelez remedierea clean_term_cache menționată mai sus, din același plugin, în același timp în care sunt create categoriile. Pot plasa apelul într-un plugin separat și să-l rulez după primul plugin și funcționează, dar nu în același plugin care creează categoriile.

Scott B Scott B
19 apr. 2011 22:42:23

@Scribu: Poți să clarifici ce înțelegi prin "ștergerea opțiunii". Asta nu funcționează pentru mine și nu găsesc nicio referire la această soluție în raportul de bug.

Scott B Scott B
19 apr. 2011 23:24:17

http://core.trac.wordpress.org/ticket/18628 pare relevant de asemenea

Ian Dunn Ian Dunn
11 iul. 2012 01:44:20

Acest bug afectează și taxonomiile personalizate ierarhice? Când creez termeni de taxonomie personalizată ierarhică programatic, nu văd ierarhia reflectată în panoul de administrare /edit-tags.php?taxonomy=MY_TAX_HERE. Trebuie să fac o actualizare rapidă a oricăruia dintre termeni pentru a vedea ultima ierarhie. De asemenea, clean_term_cache('MY_TAX_HERE'); nu ajută.

Average Joe Average Joe
28 mar. 2013 02:45:17
Arată celelalte 3 comentarii
0

Am avut aceeași problemă. S-a rezolvat adăugând: delete_option("category_children")

După inserarea categoriilor, se pare că această comandă elimină cache-ul pentru categorii. Celelalte soluții alternative nu au funcționat în cazul meu.

22 dec. 2011 20:23:02