投稿の特定のカテゴリーと、カスタム投稿タイプの特定のタームをまとめて表示させたい場合ありますよね。一度get_posts関数でそれぞれの投稿を取得してから二つを結合しています。その後に最新順に並べて最新5件まで表示させるように成形しています。
<?php
$args1 = array(
'post_type' => 'post',
'posts_per_page' => 5,
'orderby' => 'date',
'cat' => 6
);
$args2 = array(
'post_type' => 'custom-post',
'posts_per_page' => 5,
'tax_query' => array(
array(
'taxonomy' => 'custom-post-taxonomy',
'field' => 'slug',
'terms' => 'term-name',
),
)
);
$posts1 = get_posts( $args1 );
$posts2 = get_posts( $args2 );
// 結果をマージ
$merged_posts = array_merge($posts1, $posts2);
// 最新順にソート
usort($merged_posts, function($a, $b) {
return strcmp($b->post_date, $a->post_date);
});
// 最新5つまで抽出
$merged_posts = array_slice($merged_posts, 0, 5);
?>
<?php if ( !empty( $merged_posts ) ) : ?>
<?php foreach ( $merged_posts as $post ) : ?>
<div><?php the_title(); ?></div>
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>