web-dev-qa-db-ja.com

wp_query分類学用語に投稿がある場合

ページテンプレートでカスタム分類法の$クエリを作成したので、特定の用語に投稿があるかどうかをどのように確認できますか?

$args = array(
    'post_type' => 'exhibitions',
    'tax_query' => array(
        array(
            'taxonomy' => 'exhibition',
            'field'    => 'slug'
        ),
    )
);
$query = new WP_Query($args);

私が正しい軌道に乗っていると仮定すると、私が探している条件付きステートメントの種類の口頭での説明は以下のようになります。

$ query分類法の用語 'current'に投稿がある場合は、何かをします。

それ以外の場合、$ query分類法の用語「近日公開」に投稿がある場合は、別の操作を行います。

1
simbasounds

あなたが正確に何を必要としているのかよくわかりませんが、通常、デフォルトではget_termsは実際に投稿が割り当てられている用語のみを返します。

$terms = get_terms( 'exhibition' );
var_dump( $terms );

これとは別に、私は本当にあなたが正確に必要なものを知りません

0
Pieter Goosen

あなたが欲しいように聞こえます has_term() 。以下のようなものです。クエリに一連の用語を入力します。

$args = array(
    'post_type' => 'exhibitions',
    'tax_query' => array(
        array(
            'taxonomy' => 'exhibition',
            'field'    => 'slug',
            'terms' => array(
              'current',
              'upcoming',
            ),
        ),
    )
);
$query = new WP_Query($args);

それからそれを複数回繰り返します。

if ($query->have_posts()) {
  while ($query->have_posts()) {
    $query->the_post();
    if (has_term('current','exhibition')) {
      // stuff
    }
  }
}
$query->rewind_posts();
if ($query->have_posts()) {
  while ($query->have_posts()) {
    $query->the_post();
    if (has_term('upcoming','exhibition')) {
      // stuff
    }
  }
}
$query->rewind_posts();
2
s_ha_dum