サポート » テーマ » 固定ページをTAG対応にしたとき、wp_nav_menuがfalseを返す

  • 解決済 やまじゅん

    (@yambal)


    お世話になっております。

    Twenty Eleven 1.4
    Twenty Eleven 1.5
    での事象です。

    固定ページでもタグを使いたいな、と思い、
    テーマの function.php に以下のコードを追加しました。

    function add_tag_to_page() {
     register_taxonomy_for_object_type('post_tag', 'page');
    }
    add_action('init', 'add_tag_to_page');
    
    function add_page_to_tag_archive( $query ) {
    	if ( is_tag() ) {
    		$query->set('post_type', array( 'post', 'page' ));
    	}
    	return $query;
    }
    add_action( 'pre_get_posts', 'add_page_to_tag_archive' );

    すると、タグアーカイブページの表示(tag.php)で
    メニューが表示されません。

    header.phpの
    wp_nav_menu( array( 'theme_location' => 'primary' ) );
    がfalseを返しているようです。

    初心者で大変申し訳ございませんが、
    原因や修正方法などございましたら、何卒よろ引くお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは、

    add_page_to_tag_archiveアクションの目的は、何ですか?

    トピック投稿者 やまじゅん

    (@yambal)

    お世話になっています。

    add_page_to_tag_archiveアクションの目的は、何ですか?

    タグアーカイブページにおいて、
    「投稿」「固定ページ」の区別なく、該当タグが付けられた記事をリストするためのもの
    と認識しております。
    一覧の表示自体は、問題なく表示されています。

    何卒よろしくお願いいたします。

    タグアーカイブページにおいて、
    「投稿」「固定ページ」の区別なく、該当タグが付けられた記事をリストするためのもの
    と認識しております。
    一覧の表示自体は、問題なく表示されています。

    以下のように、pre_get_postsアクションフックをはずして、何か問題が出ますか?

    //add_action( 'pre_get_posts', 'add_page_to_tag_archive' );

    投稿タイプは標準で、post,page,attachment,revision,nav_menu_itemがあります。

    私には、nav_menu_item 投稿タイプを制限しているように見えるのですが、

    追記:私がアホでした。

    function add_page_to_tag_archive( $query ) {
    	if ( is_tag() ) {
    		$query->set('post_type', array( 'post', 'page','nav_menu_item' ));
    	}
    	return $query;
    }
    add_action( 'pre_get_posts', 'add_page_to_tag_archive' );

    でどうですか?

    私の方では、カスタムメニューが、フォールバックのページリストを表示している時は、メニューが表示できて、カスタムメニューを設定した時には、表示できなくなるようでした。

    is_main_query() がないと色々と副作用を起こします。また、この場合 return 文はいらないのでは?

    function add_page_to_tag_archive( $query ) {
        if ( is_tag() && $query->is_main_query() ) {
            $query->set('post_type', array( 'post', 'page' ));
        }
    }
    add_action( 'pre_get_posts', 'add_page_to_tag_archive' );

    トピック投稿者 やまじゅん

    (@yambal)

    お世話になっています。

    nobita様
    ‘nav_menu_item’を追加することで表示することができました。
    ありがとうございます。

    pluto1234様
    $query->is_main_query()
    コレも効きました

    それぞれの意味は、またソースコードを読み解いていくとして
    2つをガッチャンコして以下のようにしました。

    function add_page_to_tag_archive( $query ) {
    	if ( is_tag() && $query->is_main_query() ) {
    		$query->set('post_type', array( 'post', 'page', 'nav_menu_item'));
    	}
    }
    add_action( 'pre_get_posts', 'add_page_to_tag_archive' );

    ありがとうございました。
    とても助かりました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「固定ページをTAG対応にしたとき、wp_nav_menuがfalseを返す」には新たに返信することはできません。