Wordpress在列表中获取唯一的自定义字段值

时间:2013-11-29 20:51:44

标签: php arrays wordpress custom-post-type array-unique

我有一个完整的导演列表,但是只想显示他们唯一的名字而不是重复。看起来像

的东西 导演A,导演B,导演C,......

不是

导演A,导演A,导演B,导演C,导演C,......

我尝试使用array_unique执行此操作,但它似乎没有将任何数据放入数组中。

我看到foreach循环显示了导演的所有名称,但不知何故,数组$ alldirectors保持为空。

以下是我正在使用的代码。

<?php
$resume = get_posts(array(
          'post_type' =>'resume', 
          'numberposts'=>-1, 
          'meta_key' => 'director', 
          'meta_value' => '' 
));

$alldirectors = array();
foreach( $resume as $post ) {
      $director = get_post_meta( $post->ID, 'director', true );
 }

 $directors = array_unique($alldirectors);
 foreach ($directors as $director) {
  echo $directors;
 }
 ?>

这可能是我想念的简单事情,但我是php和wordpress的新手感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

尝试使用像这样的标准查询

global $wpdb; (this is required when are you inside the function)

$values = $wpdb->get_results("SELECT DISTINCT meta_value FROM $wpdb->postmeta pm, $wpdb->post p WHERE meta_key  = 'director' and pm.post_id=p.ID  and p.post_type='resume' ",ARRAY_A);

print_r($values);

答案 1 :(得分:0)

您没有将导演名称存储在$alldirectors中,因此它是空的尝试这个

$alldirectors = array();
foreach( $resume as $post ) {
    $alldirectors[]=   get_post_meta( $post->ID, 'director', true );
 }

然后使用你的循环

 $directors = array_unique($alldirectors);
 foreach ($directors as $director) {
  echo $directors;
 }

答案 2 :(得分:0)

array_unique将按照你的意愿行事。但是,查看代码时,您尚未将任何数据分配给$ alldirectors数组。试试这一行:

$alldirectors = get_post_meta(blah blah); 

而不是

$director = get_post_meta(blah blah);