私はdivを持っていて、カテゴリ-aの商品やカテゴリ-bの商品をランダムに表示したいと思っています。そのためのクエリを探しています。
私はこれを試しました:
<?php
$args = array(
'post_type' => array('product', 'post'),
'posts_per_page' => 1,
'cat' => 1,2,
'orderby' => 'Rand'
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>
<article class="promo">
<div class="image">
<?php if (is_singular('product')){
echo 'Product';
}else{
echo 'Post';
}?>
</div>
</article>
<?php endwhile; ?>
誰かがそれを行う方法を知っていますか?ありがとうございました :)
編集コード
<?php
$args = [
'post_type' => ['product','post'],
'posts_per_page' => -1,
'fields' => 'ids',
'post_type' => ['product','post'],
'posts_per_page' => 2,
'fields' => 'ids',
'tax_query' => [
'relation' => 'OR',
'taxonomy' => 'category',
'field' => 'slug',
'terms' => ['promo-distributeur', 'actu-distrib'],
'include_children' => false,
]
]
];
$posts_ids = get_posts($args);
$total = count($posts_ids);
if ($total > 0) {
$rnd = mt_Rand(0, $total);
$pid = $posts_ids[$rnd];
$post = get_post( $pid);
while ( $post->have_posts() ) : $post>the_post(); global $product; ?>
<article class="promo">
<div class="image">
<?php if (is_singular('product')){
echo 'Product';
}else{
echo 'Post';
}?>
</div>
</article>
<?php endwhile;
} ?>
次のコードは、category-a
およびcategory-b
という用語にそれぞれ属するすべての投稿タイプproduct
およびpost
のIDをそれぞれtaxonomy_01
およびtaxonomy_02
で選択します。
$args = [
'post_type' => ['product','post'],
'posts_per_page' => -1,
'fields' => 'ids',
'tax_query' => [
'relation' => 'OR',
[
'taxonomy' => 'taxonomy_01',
'field' => 'slug',
'terms' => 'category-a',
'include_children' => false,
],
[
'taxonomy' => 'taxonomy_02',
'field' => 'slug',
'terms' => 'category-b',
// OR by id
//'field' => 'term_id', // default value
//'terms' => 2,
'include_children' => false,
],
]
];
$posts_ids = get_posts($args);
$total = count($posts_ids);
if ($total > 0) {
$rnd = mt_Rand(0, $total - 1);
$pid = $posts_ids[$rnd];
$my_post = get_post( $pid);
// display post
}
category-a
、category-b
という用語は異なる分類法に属していると思います。そうでない場合は、tax_query
は次のようになります。
'tax_query' => [
[
'taxonomy' => 'taxonomy_01',
'field' => 'slug',
'terms' => ['category-a', 'category-b'],
'include_children' => false,
],
]
_アップデート_
上記のコードの変数を$post
からmy_post
に変更しました。あなたのコード:
$args = [
'post_type' => ['product','post'],
'posts_per_page' => -1,
'fields' => 'ids',
'tax_query' => [
'relation' => 'OR',
[
'taxonomy' => 'taxonomy_01',
'field' => 'slug',
'terms' => 'category-a',
'include_children' => false,
],
[
'taxonomy' => 'taxonomy_02',
'field' => 'slug',
'terms' => 'category-b',
// OR by id
//'field' => 'term_id', // default value
//'terms' => 2,
'include_children' => false,
],
]
];
$posts_ids = get_posts($args);
$total = count($posts_ids);
if ($total > 0) {
// get random post_ID
$rnd = mt_Rand(0, $total - 1);
$pid = $posts_ids[$rnd];
$my_post = get_post( $pid);
// display post
if ( !empty($my_post) ) : ?>
<article class="promo">
<div class="image">
<?php
if ( $my_post->post_type == 'product' )
echo 'Product';
else
echo 'Post';
?>
</div>
</article>
<?php endif;
}