Opzione "category_children" mancante durante la creazione dinamica di categorie tramite un plugin

18 apr 2011, 22:10:36
Visualizzazioni: 1.17K
Voti: 2

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.

0
Tutte le risposte alla domanda 2
8

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.

19 apr 2011 20:36:20
Commenti

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.

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

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

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

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.

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

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

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

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.

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

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

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

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

Ian Dunn Ian Dunn
11 lug 2012 01:44:20

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.

Average Joe Average Joe
28 mar 2013 02:45:17
Mostra i restanti 3 commenti
0

Avevo lo stesso problema. Si è risolto aggiungendo: delete_option("category_children")

Dopo aver inserito le categorie, apparentemente questo svuota la cache per le categorie. Le altre soluzioni alternative non hanno funzionato nel mio caso.

22 dic 2011 20:23:02