Código de tipo de publicação personalizado esconde a navegação

Oi, eu tenho esse código para tipos de postagem personalizados

add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( is_home() ) $query->set( 'post_type', array( 'post', 'page', 'album', 'movie', 'quote', 'attachment' ) ); return $query; } 

Eu adicionei-o ao meu arquivo functions.php, ele funciona, mas faz meu menu de navegação desaparecer.

Solutions Collecting From Web of "Código de tipo de publicação personalizado esconde a navegação"

Parece que você está substituindo a consulta do menu do navegador. Ao adicionar o ! is_admin() ! is_admin() e $query->is_main_query() , você pode garantir que você está segmentando a consulta principal para posts no front-end.

 add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( ! is_admin() && $query->is_main_query() && is_home() ) $query->set( 'post_type', array( 'post', 'page', 'album', 'movie', 'quote', 'attachment' ) ); return $query; } 

O motivo pelo qual a consulta estava escondendo a navegação é porque você estava faltando o tipo de mensagem ‘nav_menu_items’:

 add_filter( 'pre_get_posts', 'filter_pre' ); function filter_pre( $query ) { if( ! $query->is_main_query() || ! $query->is_home() ) return $query; $query->set( 'post_type', array( 'posts', 'custom_p_type', 'nav_menu_items' ) ); return $query; } 

Encontrou uma solução, e faz mais do que pedi. Esta solução mostra os tipos de postagem personalizados que você deseja exibir na página inicial e a segunda metade mostra isso nos arquivos e resultados de pesquisa 🙂

 add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( is_home() && false == $query->query_vars['suppress_filters'] || is_feed() ) $query->set( 'post_type', array( 'posts', 'custom_post_type_name' ) ); return $query; } add_filter('pre_get_posts', 'query_post_type'); function query_post_type($query) { if ( is_archive() && empty( $query->query_vars['suppress_filters'] ) ) { $post_type = get_query_var('post_type'); if($post_type) $post_type = $post_type; else $post_type = array('posts', 'custom_post_type_name'); $query->set('post_type',$post_type); return $query; } } 

Coloque isso em seu arquivo functions.php