2017-06-14 59 views
0

我有一个自定义职位类型“成员”与自定义分类“member_category”。在这个分类中,我有一个名为“display”的自定义字段(作为元数据)。WordPress的:通过分类术语的自定义元数据(元字段)的cutom查询

现在我想从数据库中查询成员,只接收具有元数据“显示”值为“1”的分类的成员。

我的尝试是:

$args = array(
'post_type' => 'member', 
'tax_query' => array(
     array(
      'taxonomy' => 'member_category', 
      'value' => '1', 
      'field' => 'term_meta[display]' (????) 
      'operator' => 'LIKE' 
    ) 
)); 
$query = new WP_Query($args); 

但它不工作。 有什么想法?也许我应该使用SQL查询?如果是这样,我应该写哪个$wpdb查询?

谢谢

回答

0

你应该首先提取方面有你这样的期望meta值:

$term_args = array('taxonomy' => 'member_category'); 
$terms = get_terms($term_args); 
$term_ids = array(); 
if (! empty($terms) && ! is_wp_error($terms)) 
{ 
    foreach($terms as $term) 
    { 
     $val = get_term_meta($term->term_id, 'display', true); 
     if($val == '1') { 
      // push the ID into the array 
      $term_ids[] = $term->ID; 
     } 
    } 
} 

然后传递,如下tax_query组合的id:

$args = array('post_type' => 'member'); 
$tax_query = array(); 
if(sizeof($term_ids)) 
{ 
    $tax_query = array(
         'relation' => 'AND', 
         array(
           'taxonomy' => 'member_category', 
           'field' => 'ID', 
           'terms' => $term_ids, 
           'operator' => 'IN', 
           ) 
        ); 
} 
if(sizeof($tax_query)) 
    $args['tax_query'] = $tax_query; 
+0

@Antika非常感谢您! 解决方法: 而不是'$ val = get_term_meta($ term-> ID,'display',true);'应该是'$ val = get_term_meta($ term-> term_id,'display',true );' – shlomi

+0

@shlomi不客气!感谢您的建议! –

0

您不需要使用SQL查询。如果您正在查询元数据,则需要使用元查询。

$args = array(
'post_type' => 'member', 
'meta_query' => array(
    array(
     'key' => 'display', 
     'value' => '1', 
    ) 
)); 

在你的参数上,你有税务查询中的一切,这就是为什么它不起作用。

相关问题