web-dev-qa-db-ja.com

wp_nav_menuが数ページ表示されない

私はページに関する問題を解決しました、正しい答えは下記のptriekのコメントです。

Wp_nav_menuは私のカテゴリページを除いてすべてのページで動作します(おそらく私のアーカイブページもアーカイブページへのリンクがないので大丈夫です)。

私のテーマファイルにはarchive.phpがありますが、これはカテゴリ、タグ、アーカイブ、作者などのページに表示されるものを制御します。

Wp_nav_menuを表示するためにすべてのページが同じheader.phpを使用しているため、カテゴリページには表示されません。

私は何かを見落としていますか?私はこれを理解しようとして私のキーボードに頭をぶつけてきました、そしてそれはただうまくいきません!

非常に単純なコードを使う:<?php wp_nav_menu('container_class=menu-header&theme_location=primary'); ?>

4
Jared

私は同じ問題を抱えていましたが、新しいバージョンのWordpress(3.7.1)を使っていました。

カスタム投稿のカスタム分類法があるページでは、wp_nav_menuは表示されませんでした。以下の解決策は私のために働いた。

テーマのfunctions.phpで:

add_action( 'pre_get_posts', 'my_pre_get_posts' );
function my_pre_get_posts($query) {
  if ($query->get('post_type') === 'nav_menu_item') {
    $query->set('tax_query','');
  }
}
6
Implode

Implodeの答えは正しかったし、私を大いに助けてくれた。サブカテゴリの投稿を表示しないようにするためのフック(pre_get_posts)を実装しようとしました。 Nav-Menusがなくても私のフックはうまくいきました。

そのため、tax_queryを変更するときは、post_type == 'nav_menu_item'を使ったクエリに対してこれを行わないようにする必要があります。

2
user2447452

Implodeによる回答は、 'meta_key'のような他のクエリを使用していない場合にのみ問題を解決します。私は完全な解決策を見つけました ここ

function fix_nav_menu( $query ) {
    if ( $query->get( 'post_type' ) === 'nav_menu_item' ) {
        $query->set( 'tax_query', '' );
        $query->set( 'meta_key', '' );
        $query->set( 'orderby', '' );
    }
}

add_action( 'pre_get_posts', 'fix_nav_menu' );
1
sambua