サポート » 使い方全般 » タグアーカイブでカスタムメニューが出力されない

  • 解決済 ankokkk

    (@ankokkk)


    タグアーカイブのページでカスタムメニューが出力されないという症状です。
    以下のフォーラムページとほとんど同じ症状です。
    ●タグ別アーカイブで、カスタムメニューが表示されなくなる
    http://ja.forums.wordpress.org/topic/6408?replies=7

    固定ページでもタグを利用するため、

    `function add_page_to_tag_archive( $obj ) {
    if ( is_tag() ) {
    $obj->query_vars[‘post_type’] = array( ‘post’, ‘page’ );
    }
    }
    add_action( ‘pre_get_posts’, ‘add_page_to_tag_archive’ );`

    というfunctionをfunctions.phpに記入しています。
    以下のページを参照しました。

    ●固定ページに設定したタグをタグ別アーカイブやタグクラウドで利用
    http://ja.forums.wordpress.org/topic/6380?replies=7

    もろにpyonkoさんとまったくもって同じ症状なんですが、どうやら

    $obj->query_vars['post_type'] = array( 'post', 'page' );

    の部分が影響しているようで、コメントアウトするとカスタムメニューは表示されます。
    もちろんタグアーカイブは表示されないのですが。

    query_varsを指定するとカスタムメニューが出力できなくなる、ということはありますでしょうか?
    『タグアーカイブで固定ページの投稿も含めて、カスタムメニューも出力させる』にはどうしたらよいでしょうか。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター jim912

    (@jim912)

    ankokkkさん、こんにちは。

    以前の回答で不足している部分があり、ご迷惑をおかけいたしました。
    カスタムメニューも pre_get_posts でのフックの影響を受けます。これは、カスタムメニューも内部では1つのカスタム投稿タイプとして扱われているため、無条件にパラメーターを上書きすると、本来設定されていたパラメーターが変更されて正常にメニューのデータを取得できなくなるためです。

    is_main_queryを使って分岐処理を行い、記事取得の場合のみフックが有効になるようにしましょう。

    3.3の新しい関数 is_main_query を使おう

    jim912世話役さま
    ありがとうございます。
    こちらも以下のページでクリアでもできました。
    http://www.billerickson.net/customize-the-wordpress-query/

    `function add_page_to_tag_archive( $obj ) {
    global $wp_the_query;
    if( $wp_the_query === $obj && $obj->is_tag() ) {
    $obj->query_vars[‘post_type’] = array( ‘post’, ‘page’ );
    }
    }
    add_action( ‘pre_get_posts’, ‘add_page_to_tag_archive’ );`

    3.2以下の場合はmain_queryが使えないため、こんな感じになるようです。

    フォーラムは本当に助かります!

    ankokkkさん、貴重なスレッドを作成していただいたので、私も長年の不具合を解決することが出来ました。ありがとうございました。

    ankokkkさん、お蔭で、私も長年放っておいた不具合が解決しました。
    ありがとうございました。

    すみません、手違いで、投稿がだぶってしまいました。

    解決したときの興奮が見て取れますね。
    お互いさまで、がんばりましょうー

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「タグアーカイブでカスタムメニューが出力されない」には新たに返信することはできません。