サポート » 使い方全般 » 月別かつ特定のカテゴリの一覧を表示させる方法

  • 解決済 nels0n

    (@nels0n)


    掲題の件について両方の機能をプラグインなしで実装したいと思っております。
    date.phpファイルを作成し”<?php if(have_posts()): while(have_posts()):the_post(); ?>”
    を使い月別の一覧表示までされることを確認しています。
    そこから特定のカテゴリのみを表示させようと”<?php query_posts(‘category_name=表示させたいカテゴリ’); ?>”を上記に追加すると特定のカテゴリは表示されるものの、月別一覧ではなくなってしまいます。

    サブループなどで特定のカテゴリ、月別の指定ができるかを調べておりますがどなたか同じ機能を実装された方はいらっしゃいますでしょうか。

    ご教授いただけますと幸いです。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • CG

    (@du-bist-der-lenz)

    カテゴリー一覧の前に、年/月/を挟むと、月別かつ特定のカテゴリーのアーカイヴ表示しませんか。

    こんにちは

    pre_get_posts アクションフックで日付アーカイブの場合の検索条件を変更変更すれば、date.php の中で特定のカテゴリの投稿のみを表示することができます。

    参考:https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/pre_get_posts

    以下サンプルです。

    function my_pre_get_posts($query){
    	if($query->is_date()){ // 日付アーカイブの場合
    		$query->set( 'category_name','カテゴリのslug' );
    	}
    }
    add_action( 'pre_get_posts', 'my_pre_get_posts' );

    このコードには以下の制限があります。
    ・日付アーカイブすべてが指定したカテゴリのみになります。
    ・date.php では特定のカテゴリになりますが、ウィジットなどで月別アーカイブの件数を表示している場合、その件数は特定のカテゴリのみにはなりません。

    余談ですが、query_posts は非推奨になっています。
    投稿のリストを取得したい場合には get_pots を使われるといいと思います。

    こんにちは

    下記のような URL での表示では駄目なのでしょうか?
    https://example.com/2018/08/?cat=123
    https://example.com/?m=201808&cat=123

    トピック投稿者 nels0n

    (@nels0n)

    CG さん

    コメントありがとうございます。
    なんとなくですがCGさんのコメントのおかげで無事に期待動作を実現できました。
    ありがとうございます。

    トピック投稿者 nels0n

    (@nels0n)

    munyagu さん

    コメントありがとうございます。
    また、詳細な解説と参考ページまでありがとうございます。
    はじめはmunyaguさんの案を試していたのですが、期待動作にならず別の方法を取らせていただきました。

    今回はご協力いただきありがとうございました。

    トピック投稿者 nels0n

    (@nels0n)

    ishitaka さん

    コメントありがとうございます。
    先日のトピックでもおせわになりました。

    おそらくそのURL表示はパーマリンク設定に依存するものだと思っており、私の環境だとうまくいかないものだと思っており、別の方法にて無事に解決できました。
    今回もご協力いただきありがとうございます。

    トピック投稿者 nels0n

    (@nels0n)

    コメントしていただいたみなさま、ご協力いただきありがとうございました。
    無事に期待動作通り動くことを確認できました。

    以下、メモとして載せます

    date.phpで月別 特定カテゴリのみ表示させる方法

    <?php
      $year = get_query_var('year');
      $monthnum = get_query_var('monthnum');
      $arg = array(
          'year' => $year,
          'monthnum' => $monthnum,
          'posts_per_page' => -1,
          'orderby' => 'date',
          'order' => 'DESC', 
          'category_name' => 'blog' 
        );
    $posts = get_posts( $arg );
    if( $posts ): ?>
    <?php
    foreach ( $posts as $post ) :
    setup_postdata( $post ); ?>
    
    //表示させたい内容
    
    <?php endforeach; ?>
    
    <?php endif; wp_reset_postdata(); ?>
    
    • この返信は5年、 10ヶ月前にnels0nが編集しました。
7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「月別かつ特定のカテゴリの一覧を表示させる方法」には新たに返信することはできません。