簡體   English   中英

如何查詢具有多個特定標簽的帖子?

[英]How to query posts which have more than one specific tags?

我想查詢同時具有$apple$orange標簽的特定帖子。
使用tag__in返回具有$apple$orange標簽的帖子列表。
但是我想要兼具兩者的職位。

這是我的代碼:

$apple = 276; // tag id of Apple
$orange = 29; // tag id of orange

$args  = array(
    'post_type'     => array(
                        'post',
                        'review',
                        'cardguide'
                    ),
    'taxonomy'      => 'post_tag',
    'posts_per_page'=> - 1,
    'tag__in'       => array(
                        $apple,
                        $orange
                    ),
    'orderby'       => 'id',
    'order'         => 'DESC',

    'meta_key'      => 'event_end_date',
    'meta_query'    => array(
        'relation'=> 'AND',
        array(
            'key'    => 'event_start_date',
            'value'  => $today,
            'compare'=> '<=',
            'type'   => 'DATE'
        ),
        array(
            'key'    => 'event_end_date',
            'value'  => $today,
            'compare'=> '>=',
            'type'   => 'DATE'
        )
    )

);

因為我已經在這里有一個meta_query ,所以我很困惑如何修改它以獲得預期的輸出。 使用=運算符為這些標簽添加新數組以進行比較無法正常工作。

'meta_query'    => array(
    'relation'=> 'AND',
    array(
        'key'    => 'event_start_date',
        'value'  => $today,
        'compare'=> '<=',
        'type'   => 'DATE'
    ),
    array(
        'key'    => 'event_end_date',
        'value'  => $today,
        'compare'=> '>=',
        'type'   => 'DATE'
    ),
    array(
        'key'    => 'tag_id',
        'value'  => $apple,
        'compare'=> '=',
    ),
    array(
        'key'    => 'tag_id',
        'value'  => $orange,
        'compare'=> '=',
    ),
)

我認為您應該使用稅收查詢而不是元查詢。

因此,您的代碼將類似於:

$taxQuery = array('relation' => 'AND');

array_push($taxQuery,array(
    'taxonomy' => 'post_tag',
    'field' => 'id',
    'terms' => $apple,
));
array_push($taxQuery,array(
    'taxonomy' => 'post_tag',
    'field' => 'id',
    'terms' => $orange,
));


// And add in your args like tax-query
$args  = array(
'post_type'     => array(
                    'post',
                    'review',
                    'cardguide'
                ),

'posts_per_page'=> - 1,

'orderby'       => 'id',
'order'         => 'DESC',

'meta_key'      => 'event_end_date',
'meta_query'    => array(
    'relation'=> 'AND',
    array(
        'key'    => 'event_start_date',
        'value'  => $today,
        'compare'=> '<=',
        'type'   => 'DATE'
    ),
    array(
        'key'    => 'event_end_date',
        'value'  => $today,
        'compare'=> '>=',
        'type'   => 'DATE'
    )
),
'tax_query' => $taxQuery


);

你為什么不嘗試這樣的事情:

$pics = DB::table('pictures')
  foreach ($pics as $pica) {
    if ($pica->category !== 1) 
{
     continue;
 }
  echo ...  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM