Eu me deparo com coisas semelhantes de tempos em tempos. O que acabei fazendo ao usar tipos de postagem personalizados e taxonomias é o seguinte:
- Configure um retorno de chamada no init (antes de 10) para registrar taxonomias.
- Configure outro no init (antes de 10) para registrar os tipos de postagem.
- Configure outro em 10 para relacioná-los, talvez mais tarde, se estiver trabalhando com outras taxonomias e tipos de postagens de outras pessoas e eles estiverem registrando-os em 10.
Fazer isso quase sempre eliminou problemas estranhos que eu tive com objetos personalizados e a documentação sobre funções register_ * em notas do wordpress que você definitivamente deveria estar registrando-os durante o init.
Se você não vinculá-los manualmente, você pode ou não falar corretamente entre eles ... e o update_callback_count é parte do processo de conversa, então eu registro todos os objetos durante o init antes das 10 e depois associá-los todos depois (ou em) 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}");
}
}
}
Isso resolveu todos os tipos de problemas estranhos relacionados a tipos de postagem personalizados e taxonomias para mim. Se isso não resolver o problema, talvez valha a pena procurar na fonte para ver exatamente como _update_post_term_count funciona ... e olhar para seus relacionamentos para ver se talvez isso esteja forçando _update_generic_term_count.