He encontrado cosas similares de vez en cuando. Lo que acabé haciendo al usar tipos de correos personalizados y taxonomías es lo siguiente:
- Configure una devolución de llamada en init (antes de 10) para registrar taxonomías.
- Configura otro en init (antes de 10) para registrar tipos de publicaciones.
- Configure otro en 10 para relacionarlos, tal vez más adelante si trabaja con taxonomías y tipos de publicaciones personalizados de otras personas y los registra en 10.
Al hacerlo, casi siempre se eliminaron los problemas impares con los objetos personalizados y la documentación sobre el registro_ * funciona en las notas de WordPress en las que definitivamente debería estar registrándolos durante el inicio.
Si no los vinculas manualmente, puedes o no obtener una conversación correcta entre ellos ... y update_callback_count es parte de esa conversación, así que registro todos los objetos durante init antes del 10 y luego Asociarlos todos después (o en) 10.
add_action('init', do_create_taxonomies, 7);
function do_create_taxonomies() {
# setup taxonomies as array of key => options arrays
foreach ( $taxonomies as $slug => $options ) {
register_taxonomy("{$slug}", null, "{$options}");
}
}
add_action('init', do_create_post_types, 8);
function do_create_post_types() {
# setup post types as array of key => options arrays
foreach ( $post_types as $slug => $options ) {
register_post_type("{$slug}", "{$options}");
}
}
add_action('init', do_bind_post_types_to_taxonomies, 11);
function do_bind_post_types_to_taxonomies() {
# setup relationships as Tax_slug => array( post_type_slugs )
foreach ( $relationships as $tax_slug => $post_types ) {
if ( is_array($post_types) ) {
foreach ( $post_types as $post_type_slug ) {
register_taxonomy_for_object_type( "{$tax_slug}", "{$post_type_slug}" );
}
} else {
register_taxonomy_for_object_type("{$tax_slug}", "{$post_types}");
}
}
}
Para mí, he resuelto todo tipo de problemas extraños relacionados con tipos de correos personalizados y taxonomías. Si eso no funciona, podría valer la pena profundizar en la fuente para ver exactamente cómo funciona _update_post_term_count ... y ver sus relaciones para ver si tal vez está forzando a _update_generic_term_count en su lugar.