サポート » テーマ » archive.phpでカスタムメニューが表示されたりされなかったりする問題について

  • 解決済 Koji Kuno

    (@olein)


    オリジナルのテーマを制作しています。

    archive.phpを使ってカテゴリのアーカイブ一覧やタグのーカイブ一覧を表示させようとしています。

    archive.phpにはheader.php内に記述してあるカスタムメニュー(グローバルナビ)と、archive.php内に記述してあるメニュー(カテゴリナビ)の2つが表示されるようになっています。

    カテゴリ一覧では2つのメニューとも正常に動作し表示される(どのカテゴリでも問題なく)のですが、タグ一覧ではそれらメニュー2つとも表示されることもなく(どのタグでも表示されない)、エラーも吐き出すことはありません。

    大変困っております。お知恵をお貸しいただければと思います。
    よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • タグ一覧のページはテンプレート tag.php ではないですか?
    違っていたらごめんなさい。

    優先順位的には下記URLにもあるような流れになると考えています。

    現在、archive.phpを用意していて、tag.phpやtag-{slug}.phpは用意していないので、archive.phpが表示されるようになっています。

    ちなみにですが、archive.phpを複製してtag.phpを作り表示させても改善されませんでした。

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

    参照:https://wpdocs.osdn.jp/%E3%82%BF%E3%82%B0%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88

    • この返信は2 年、 6 ヶ月前に  Koji Kuno さんが編集しました。

    解決済みなら、差し支えなければ解決方法も投稿したていただけるとよいのですが。

    functions.phpに固定ページにタグ機能を追加するために以下のコードを記述していました。

    function _quadrille_add_page_to_tag_archive( $obj ) {
    	if ( is_tag() ) {
    		$obj->query_vars['post_type'] = array( 'post', 'page' );
    	}
    }
    add_action( 'pre_get_posts', '_quadrille_add_page_to_tag_archive' );

    pre_get_postsを利用するにあたり、! is_admin() && $obj->is_main_query()は絶対に必要だ、というご指摘を別途いただきまして、以下のように修正することによって改善されました。

    function _quadrille_add_page_to_tag_archive( $obj ) {
    	if ( ! is_admin() && $obj->is_main_query() && $obj->is_tag ) {
    		$obj->set( 'post_type', array( 'post', 'page' ) );
    	}
    }
    add_action( 'pre_get_posts', '_quadrille_add_page_to_tag_archive' );
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「archive.phpでカスタムメニューが表示されたりされなかったりする問題について」には新たに返信することはできません。