Falta la opción "category_children" al crear categorías dinámicamente mediante un plugin
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.

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.

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.

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

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.

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

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.

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

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

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