###1.実現したいこと
WordPress で特定のCategoryを関連記事としてランダム表示をさせたいが、任意の条件の記事は非表示設定にするには?
###2.発生している問題
WordPress のメイン投稿と違い、以下の条件で投稿記事を PHP を使ってループ表示させたいと思っています。
表示自体は問題なくできるのですが、次のことを反映させるにはどのようにすればいいでしょうか?
➀ 2記事を表示
➁ 日付が上から新しい投稿の3記事は非表示
➂ Category 【ニュース】を持つ投稿
➃ ランダムに表示
###3.該当のソースコード
PHP
1<?php 2 if (has_category()) { 3 $category = get_the_category(); 4 $categoryIDs = array(); 5 foreach ($category as $cat) { 6 $categoryIDs = $cat->term_id; 7 } 8 } 9 $args = array( 10 'posts_per_page' => 2, // ➀ 2記事を表示 11 'post__not_in' => array($post->ID), // ➁ 非表示設定 12 'category__in' => $categoryIDs, // ➂ 現在のカテゴリーIDを取得 13 'orderby' => 'rand' // ➃ ランダムに表示 14 ); 15 $related_query = new WP_Query($args); 16?>
###4.試してみたこと
コードを変更しないといけない箇所はおそらく、➁ の箇所だと思っています。
'post__not_in' => array($post->ID),
この記述では「現在の記事は関連記事として表示させない」という設定になっていると思います。
ここをどのように変更すれば「日付が上から新しい投稿の3記事は非表示 」が実現できるのでしょうか?
つまり、以下の10記事がCategory 【ニュース】で投稿されていたとします。
- ニュース (1月10日)
- ニュース (1月9日)
- ニュース (1月8日)
- ニュース (1月7日)
- ニュース (1月6日)
- ニュース (1月5日)
- ニュース (1月4日)
- ニュース (1月3日)
- ニュース (1月2日)
- ニュース (1月1日)
この場合 (1月8日~10日) の3投稿は除外して、(1月1日~7日) の中からランダムに2記事表示させたいと思っています。
###5.補足情報
まだ、完全に理解しきれていないため可能であれば教えてほしいことがあります。
仮に、別のカテゴリーで同じことをしたい場合はどこをどう変更すればいいのでしょうか?
つまり、 Category 【ニュース】ではなく、【お客様の声】などに変更したい場合はどこの値で変更することができるのでしょうか?
この質問の範疇で回答が可能であれば教えていただければ幸いです。
回答1件
あなたの回答
tips
プレビュー