1

この関数を使用して、カスタム投稿タイプ「ポートフォリオ」をアーカイブ/カテゴリ/タグ ページ (functions.php 内) に表示させています。

function namespace_add_custom_types( $query ) {
  if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
    $query->set( 'post_type', array('post', 'portfolio'));
      return $query;
    }
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' 

問題は、何らかの理由でナビメニューが消えてしまうことです。(header.php 内の) ナビゲーション メニューのコードは次のとおりです。

<?php wp_nav_menu(array( 'theme_location'  => 'primary', 'sort_column' => 'menu_order', 'menu_class' => 'nav-menu', 'container_class' => 'nav-menu',) ); ?>

私が何を変えることができるか考えていますか?

4

2 に答える 2

7

WordPress のナビゲーション メニューはnav_menu_item投稿タイプの投稿で構成されており、関数がすべてのクエリの投稿タイプを変更するため、何も表示されません。

解決策: をチェックして、メイン クエリのみを変更しますis_main_query。例:

if( is_category() && $query->is_main_query() ) {
    // do stuff
}

PS:pre_get_postsアクションフックなので、次add_actionの代わりに使用する必要がありadd_filterます。

add_action( 'pre_get_posts', 'namespace_add_custom_types' );
于 2013-06-21T15:51:25.273 に答える