Opțiunea "category_children" lipsește la crearea dinamică de categorii prin intermediul unui plugin
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.

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.

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.

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

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.

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

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.

@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.

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

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ă.
