.カテゴリ1の新着記事1
.カテゴリ1の新着記事2
.カテゴリ1の新着記事3
.カテゴリ2の新着記事1
.カテゴリ2の新着記事2
.カテゴリ2の新着記事3
・
・
・
という順ではダメでしょうか?それならget_termsなどとの二重ループでできそうですが。。。
mypacecreatorさん
有難うございます。
その出し方は出来たのですが、当該のカテゴリ順で考えあぐねています。
ループの組み合わせで考えています。
やるのであれば、以下の手法が考えられます。
- カテゴリごとにget_posts
- for 文で0から2のループ
- get_postsで取得した記事の配列ごとに、forの数値の添字が存在するかを判定、存在する場合は、$post に 該当配列要素を代入し、setup_postdata をした後、 タイトルの出力
- ループ終了後の wp_reset_postadata
なお、投稿が複数のカテゴリにまたがっている場合は、重複表示となる(取得済みの記事IDをexclude指定することで回避は可能)ことや、カテゴリ内の記事数が3未満であった場合、その分表示数が少なくなりますので了承してもらう必要があります。
こんにちは、
思いつきですが、こんな感じでどうでしょう
<?php
$my_query = new WP_Query("showposts=-1");
$categories = ['aciform','UNIT TEST','Post Formats'];
$result = [];
$$categories[0] = 0;
$$categories[1] = 0;
$$categories[2] = 0;
while ( $my_query->have_posts() ) : $my_query->the_post();
foreach( $categories as $key=>$cat ) {
if( has_category( $cat, $post ) && $$cat < 5 ){
//日付優先で、カテゴリーマーカーを付けて表示
the_title($cat.': '.'<span>','</span><br />');
//カテゴリー配列に投稿を格納
$result[ $cat ][ $post->ID ] = the_title('<span>','</span>',false );
$$cat++;
}
}
endwhile;
wp_reset_postdata();
var_dump( $result );
array(3) {
["aciform"]=>
array(5) {
[37296]=>
string(23) "<span>color test</span>"
[37288]=>
string(17) "<span>test</span>"
[36550]=>
string(17) "<span>test</span>"
[36548]=>
string(17) "<span>test</span>"
[35550]=>
string(181) "<span>アイキャッチとタイトルの確認アイキャッチとタイトルの確認アイキャッチとタイトルの確認アイキャッチとタイトルの確認</span>"
}
["UNIT TEST"]=>
array(5) {
[36209]=>
string(23) "<span>Modal Form</span>"
[36206]=>
string(26) "<span>modal gallery</span>"
[36204]=>
string(23) "<span>modal list</span>"
[36199]=>
string(24) "<span>modal table</span>"
[36073]=>
string(23) "<span>font sizes</span>"
}
["Post Formats"]=>
array(5) {
[24557]=>
string(34) "<span>Post Format: Standard</span>"
[24559]=>
string(33) "<span>Post Format: Gallery</span>"
[1031]=>
string(41) "<span>Post Format: Gallery (Tiled)</span>"
[1158]=>
string(31) "<span>Post Format: Image</span>"
[24606]=>
string(41) "<span>Post Format: Image (Caption)</span>"
}
}
?>
他には、
https://ja.forums.wordpress.org/topic/123099?replies=9
等はどうでしょう
コードは全記事ループなので、取得が終わったらbreakするような処理を入れるといいと思います。