Opzione "category_children" mancante durante la creazione dinamica di categorie tramite un plugin
Ho isolato la fonte di un errore fatale che si verifica quando un sito appena creato viene visualizzato in anteprima subito dopo l'installazione e l'attivazione del plugin su cui sto lavorando.
Il problema sembra essere che la voce "category_children" nella tabella delle opzioni non viene creata.
Curiosamente, sembra che due azioni inneschino la creazione dell'opzione category_children da parte di WP. Sono: (1) Attivare un tema che contiene codice per creare categorie e (2) Semplicemente accedere al gestore delle categorie.
Se eseguo una di queste azioni dopo aver attivato il plugin, l'opzione category_children viene creata (presumibilmente a causa di controlli nell'attivazione del tema o nel caricamento di edit-tags.php) e l'errore scompare.
Ecco il codice che uso nel mio plugin per creare le categorie (eseguito solo all'attivazione del plugin):
if(!get_cat_ID('nofollow')){wp_create_category('nofollow',1);}
if(!get_cat_ID('noindex')){wp_create_category('noindex',1);}
Cosa mi manca? Devo chiamare esplicitamente un metodo per far generare a WordPress l'array di opzioni category_children per questi elementi?
AGGIORNAMENTO: Grazie all'aiuto di scribu qui sotto sulla ragione di questo bug, ho scoperto che la soluzione PARZIALE per questo bug è inserire questa riga subito dopo le chiamate a wp_create_category():
clean_term_cache('','category');
Tuttavia, questo non funziona quando viene chiamato nello stesso plugin che crea le categorie. Ho dovuto inserirlo in un plugin autonomo attivato separatamente dal plugin che crea le mie categorie.

Questo è un bug noto (e fastidioso) nel codice di caching della gerarchia tassonomica:
http://core.trac.wordpress.org/ticket/14485
In sostanza, devi forzare un aggiornamento eliminando l'opzione.

Ciao Scribu, grazie per aver postato questo. +1 per quello! Mi sono strappato i capelli cercando di capirlo. Controllerò il bug report e la tua soluzione alternativa suggerita.

@Scribu: se l'opzione non esiste (verificato visualizzando options.php) eliminarla manualmente funziona comunque come soluzione alternativa?

Solo per chiarire, devo semplicemente chiamare delete_option("category_children") dopo aver creato le mie categorie con genitore? Scusa, ma non ho visto un riferimento alla soluzione alternativa nei commenti del bug tracker.

Aggiornamento: la soluzione è inserire questa riga dopo gli inserimenti delle categorie > clean_term_cache('','category');

Aggiornamento 2: Sembra esserci un problema quando si chiama la soluzione clean_term_cache sopra, dallo stesso plugin, nello stesso momento in cui vengono create le categorie. Posso posizionare la chiamata in un plugin autonomo ed eseguirlo dopo il primo plugin e funziona, ma non nello stesso plugin che crea le categorie.

@Scribu: Puoi chiarire cosa intendi con "eliminare l'opzione". Questo non funziona per me e non riesco a trovare un riferimento alla soluzione alternativa nel bug report.

http://core.trac.wordpress.org/ticket/18628 sembra rilevante anche questo

Questo bug influisce anche sulle tassonomie personalizzate gerarchiche? Quando creo termini di tassonomie personalizzate gerarchiche programmaticamente, non vedo la gerarchia riflessa nella dashboard in /edit-tags.php?taxonomy=MY_TAX_HERE. Devo fare un aggiornamento rapido su uno dei termini per vedere la gerarchia più recente. Inoltre clean_term_cache('MY_TAX_HERE'); non aiuta.
