获取具有真实布尔值ACF的自定义分类术语

时间:2017-03-19 19:08:22

标签: wordpress advanced-custom-fields

我有一个名为frontpage的高级自定义字段。是真/假类型。

我试图恢复标记为true的所有字词。我试过这个:

$args = array(
      'hide_empty' => 0,
      'key' => 'frontpage',
      'compare' => '==',
      'value' => '1'
);

$terms = get_terms( 'people', $args );

if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo $term->name;
    }
}

但这会返回所有条款,无论是真还是假。

如何获得真正标记的条款?谢谢!

编辑: ACF文档说明如何恢复帖子,而不是如何恢复条款: https://www.advancedcustomfields.com/resources/true-false/

EDIT2:返回的对象不包含自定义字段,只包含标准元数据:

Array ( 
[0] => WP_Term Object ( 
  [term_id] => 2 
  [name] => Cristina Aiken Soux 
  [slug] => cristina-aiken-soux 
  [term_group] => 0 
  [term_taxonomy_id] => 2 
  [taxonomy] => personas 
  [description] => Cras in elementum enim, vitae volutpat sapien. Duis at sem in quam ultrices hendrerit. Class aptent taciti sociosqu ad litora torquent. 
  [parent] => 0 
  [count] => 1 
  [filter] => raw )
)

所以,第一个问题是,我如何恢复每个术语的元字段?

2 个答案:

答案 0 :(得分:1)

我会尝试此查询来检索$ acf_field_name设置为true的给定$ taxonomy的某个$ term的帖子:

 $args = array(
   'hide_empty' => 0,
     'meta_query' => array(
         array(
            'key' => $acf_field_name,
            'compare' => '==',
            'value' => '1'
         )
     ),
     'tax_query' => array(
          array(
             'taxonomy' => $taxonomy,
             'field' => 'slug',
             'terms' => $taxonomy_terms,
          ),
     )
 );
 $query = get_posts( $args );

答案 1 :(得分:0)

最后,我使用了另一种方法:获取所有条款,并在循环中输出自定义字段中标记的条款。

$args = array(
        'hide_empty' => 0
  );

  $terms = get_terms( $taxonomy, $args );
  if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
      foreach ( $terms as $term ) {
        $custom_field = get_field('custom_field', $term);
        if( $custom_field == '1' ):
            echo $term->name;
        php endif; ?>