Filtragem da tabela de administração que não está funcionando para o tipo de postagem personalizado

Quando eu tento filtrar a tabela de administração de um tipo de postagem personalizado (postagens do CPT) usando o menu suspenso selecionado, a tabela filtrada que carrega mostra 0 itens.

Esta é a estrutura de URL que está sendo criada enviando o formulário da tabela de filtro (eu adicionei setasaks para legibilidade):

{HOST} /wp-admin/edit.php
? s
& post_status = all
& post_type = dog
& ação = -1
& dog = labrador
& filter_action = Filtro
& paged = 1
& mode = list
& action2 = -1

Não há erros, tentei vários tutoriais e inúmeros ajustes e não consigo obter nada para levar. Alguém tem alguma idéia do que poderia estar acontecendo?

Posso adicionar quaisquer filtros, ações, funções, declarações que eu usei para esta questão se elas fossem úteis – apenas me avise o que seria útil para ver.

Solutions Collecting From Web of "Filtragem da tabela de administração que não está funcionando para o tipo de postagem personalizado"

Bem, a resposta curta é que suas taxonomias e tipos de postagem personalizados compartilham slugs, o que está causando que a tabela de lista não exiba nada. Se você fosse mudar os slugs de taxonomia de $newType para $newType . '_tax' $newType . '_tax' deve funcionar. Na verdade, usei essa mesma fórmula de slug no exemplo de reescrita abaixo.

Se você realmente está apenas tentando economizar tempo usando as mesmas lesmas, basta fazer as lesmas exclusivas para post_type vs taxonomia e ignorar o restante desta resposta.

No entanto, se você estiver usando os mesmos slugs na tentativa de compartilhar as slugs de reescrita de front-end, por exemplo, example.com/dog/labrador (term) vs example.com/dog/this-is-a-dog-item ( post), o seguinte deve funcionar para isso em alguma medida:

 /** * Match taxonomy term rewrite slugs with custom post type slugs. * * @param WP_Rewrite $wp_rewrite WP_Rewrite global. */ function match_tax_rewrites_to_cpt( $wp_rewrite ) { $pairs = array(); // Set up post type and taxonomy pairs. foreach ( array( 'dog', 'cat', 'fish', 'bird' ) as $slug ) { $post_type = get_post_type_object( $slug ); $taxonomy = get_taxonomy( $slug . '_tax' ); if ( is_object( $post_type ) && is_object( $taxonomy ) ) { $pairs[ $slug ] = array( 'post_type' => $post_type, 'taxonomy' => $taxonomy ); } } if ( ! empty( $pairs ) ) { $rules = array(); // Loop through the pairs. foreach ( $pairs as $slug => $objects ) { // Check if taxonomy is registered for this custom type. if ( ! empty( $tax_obj_type = $objects['taxonomy']->object_type[0] ) ) { if ( $tax_obj_type == $slug ) { // Term objects. $terms = get_categories( array( 'type' => $tax_obj_type, 'taxonomy' => $objects['taxonomy']->name, 'hide_empty' => false ) ); // Build your rewrites. foreach ( $terms as $term ) { $rules[ "{$tax_obj_type}/{$term->slug}/?$" ] = add_query_arg( $term->taxonomy, $term->slug, 'index.php' ); } } } } // Merge the rewrites. $wp_rewrite->rules = $rules + $wp_rewrite->rules; } } add_action( 'generate_rewrite_rules', 'match_tax_rewrites_to_cpt' ); 

Vale ressaltar que se você usar essa function para gerar regras de reescrita, é importante que você mova as chamadas register_post_type() acima das chamadas register_taxonomy() . Isso é para garantir que as regras de reescrita básicas geradas pelo WordPress acabem na ordem correta.