サポート » 使い方全般 » 投稿のアーカイブ(投稿一覧)を設定後、条件分岐を指定するには?

  • 解決済 conte9999

    (@conte9999)


    いつも大変お世話になっております。

    投稿のアーカイブ(投稿一覧)を設定したいと思い、
    下記のサイトの方法で投稿のアーカイブが表示されるようにしました。

    function.phpに以下を追加したら意図どおりアーカイブページが表示されるようになったのですが、

    /**
     * 投稿のアーカイブページを設定
     */
    add_filter('register_post_type_args', function($args, $post_type) {
        if ('post' == $post_type) {
            global $wp_rewrite;
            $archive_slug = 'news';
            $args['label'] = 'ニュース';
            $args['has_archive'] = $archive_slug;
            $archive_slug = $wp_rewrite->root.$archive_slug;
            $feeds = '(' . trim( implode('|', $wp_rewrite->feeds) ) . ')';
            add_rewrite_rule("{$archive_slug}/?$", "index.php?post_type={$post_type}", 'top');
            add_rewrite_rule("{$archive_slug}/feed/{$feeds}/?$", "index.php?post_type={$post_type}".'&feed=$matches[1]', 'top');
            add_rewrite_rule("{$archive_slug}/{$feeds}/?$", "index.php?post_type={$post_type}".'&feed=$matches[1]', 'top');
            add_rewrite_rule("{$archive_slug}/{$wp_rewrite->pagination_base}/([0-9]{1,})/?$", "index.php?post_type={$post_type}".'&paged=$matches[1]', 'top');
        }
        return $args;
    }, 10, 2);

    【参考サイト】
    https://qiita.com/ki6ool/items/888385014c810c9d6bec

    この投稿のアーカイブページのみに表示される条件分岐、

    もしくは archive-post.phpのような個別のテンプレートを指定するには

    どのようにすればよいかご教授いただけないでしょうか。

    お手数をおかけしますが何卒よろしくおねがいします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • halbot

    (@halbot)

    はじめまして。

    > この投稿のアーカイブページのみに表示される条件分岐

    カスタム投稿タイプアーカイブの判別ですので
    「is_post_type_archive()」を使ってみてはいかがでしょう。

    WordPress カスタム投稿タイプかどうか判別したい。

    > archive-post.phpのような個別のテンプレートを指定

    archive-post.phpを参考にarchive-news.phpを作成し、テーマ内に設置してみてください。

    conte9999

    (@conte9999)

    halbot 様

    丁寧な回答、ありがとうございます。

    早速試してみたのですが、いずれも反映されませんでした。

    archive-news.php も作成してみたのですが
    archive.php の方が反映されてしまいます。

    どこか記述が足りないのでしょうか。

    お手数おかけしますが引き続きお知恵をお貸しいただければと思います。

    halbot

    (@halbot)

    改めてfunctions.phpに記述されたというコードを見てみましたが、
    これだと投稿タイプが「post」の記事一覧を「/news」で表示する、という内容になっていますね・・・。

    function add_my_post_type(){
      $labels = array(
        'name'               => 'ニュース',
        'singular_name'      => 'ニュース',
        'add_new'            => '新規追加',
        'add_new_item'       => 'ニュースを追加する',
        'edit_item'          => 'ニュースを編集',
        'new_item'           => '新規ニュース',
        'all_items'          => '全てのニュース',
        'view_item'          => 'ニュースを見る',
        'search_items'       => 'ニュースを探す',
        'not_found'          => 'ニュースがありません',
        'not_found_in_trash' => 'ゴミ箱にニュースはありません',
        'parent_item_colon'  => '',
        'menu_name'          => 'ニュース'
      );
     
      $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'news' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
      );
      register_post_type( 'news', $args );
    }
    add_action( 'init', 'add_my_post_type' );

    こちらのコードを代わりにfunctions.phpに入れてパーマリンク設定を保存すると、
    前述した方法が使えるんじゃないかなと思います。

    カスタム投稿タイプを作成できるWordPressの関数「register_post_type」の使い方まとめ

    conte9999

    (@conte9999)

    halbot 様

    ご教授ありがとうございます。

    >投稿タイプが「post」の記事一覧を「/news」で表示する

    はい。おっしゃる通りそのような設定を行っておりました。

    すでに1000以上投稿ページに記事が投稿されてあったので
    カスタム投稿タイプでわかるわけにも行かずこのようにしたのですが、
    やはりカスタム投稿タイプのようには行かないのですね。

    結果的に、固定ページに投稿一覧を表示させるテンプレートを設定して
    同じ結果を実装しました。

    お二人とも、本当にありがとうございました。

    今後ともどうぞをよろしくおねがいします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「投稿のアーカイブ(投稿一覧)を設定後、条件分岐を指定するには?」には新たに返信することはできません。