Falta la opción "category_children" al crear categorías dinámicamente mediante un plugin

18 abr 2011, 22:10:36
Vistas: 1.17K
Votos: 2

He identificado la fuente de un error fatal que ocurre cuando se visualiza un sitio nuevo justo después de instalar y activar el plugin en el que estoy trabajando.

El problema parece ser que el elemento "category_children" en la tabla de opciones no se está creando.

Curiosamente, hay dos acciones que hacen que WordPress cree la opción category_children. Son: (1) Activar un tema que contiene código para crear categorías y (2) Simplemente acceder al administrador de categorías.

Si hago cualquiera de esas acciones después de activar el plugin, la opción category_children se crea (presumiblemente debido a verificaciones en la activación del tema o la carga de edit-tags.php) y el error desaparece.

Este es el código que uso en mi plugin para crear las categorías (se ejecuta solo en la activación del plugin):

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

¿Qué me falta? ¿Necesito llamar explícitamente a un método para que WordPress genere el array de opciones category_children para estos elementos?

ACTUALIZACIÓN: Gracias a la ayuda de scribu más abajo sobre la razón de este error, he descubierto que la solución PARCIAL es colocar esta línea justo después de mis llamadas a wp_create_category():

clean_term_cache('','category'); 

Sin embargo, esto no funciona cuando se llama en el mismo plugin que crea las categorías. Tuve que colocarlo en un plugin independiente que se activa por separado del plugin que crea mis categorías.

0
Todas las respuestas a la pregunta 2
8

Este es un error conocido (y desagradable) en el código de caché de jerarquía de taxonomías:

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

Básicamente, hay que forzar una actualización eliminando la opción.

19 abr 2011 20:36:20
Comentarios

Hola Scribu, gracias por publicar esto. ¡+1 por eso! Me he estado arrancando los pelos tratando de resolverlo. Revisaré el informe de errores y tu solución alternativa sugerida.

Scott B Scott B
19 abr 2011 20:42:20

@Scribu: si la opción no existe (verificado viendo options.php) ¿eliminarla manualmente todavía funciona como solución alternativa?

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

Solo para aclarar, ¿necesito llamar a delete_option("category_children") después de crear mis categorías con padres? Lo siento, pero no vi una referencia a la solución alternativa en los comentarios del seguimiento de errores.

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

Actualización: la solución es colocar esta línea después de las inserciones de categoría > clean_term_cache('','category');

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

Actualización 2: Parece haber un problema al llamar a la solución clean_term_cache mencionada anteriormente, desde el mismo plugin, al mismo tiempo que se crean las categorías. Puedo colocar la llamada en un plugin independiente y ejecutarlo después del primer plugin y funciona, pero no en el mismo plugin que crea las categorías.

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

@Scribu: ¿Puedes aclarar qué quieres decir con "eliminar la opción"? Eso no funciona para mí y no puedo encontrar una referencia a la solución alternativa en el informe de error.

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

http://core.trac.wordpress.org/ticket/18628 también parece relevante

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

¿Este error también afecta a las taxonomías personalizadas jerárquicas? Cuando creo términos de taxonomía personalizada jerárquica programáticamente, no veo la jerarquía reflejada en el panel de administración en /edit-tags.php?taxonomy=MY_TAX_HERE. Tengo que hacer una actualización rápida en cualquiera de los términos para poder ver la jerarquía más reciente. Además, clean_term_cache('MY_TAX_HERE'); no ayuda.

Average Joe Average Joe
28 mar 2013 02:45:17
Mostrar los 3 comentarios restantes
0

Tuve el mismo problema. Se resolvió agregando: delete_option("category_children")

Después de insertar las categorías, aparentemente esto limpia la caché de categorías. Las otras soluciones alternativas no funcionaron para mí.

22 dic 2011 20:23:02