PHP,Wordpress查询,将匹配结果合并为1

时间:2019-03-19 21:40:14

标签: php wordpress

我正在Wordpress中运行查询,以从自定义帖子类型中获取发言人列表。我只需要返回一个发言人的一个实例,即使发言人可能多次作为自定义帖子类型的元数据出现。

因此,例如,如果我查询并像这样返回列表: 鲍勃,鲍勃,鲍勃,约翰,萨利,鲍勃,鲍勃,约翰,鲍勃

我希望它是: 鲍勃,约翰,莎莉

我不确定如何使用PHP将所有匹配的结果分组。

这是我的查询:

global $post;
  $args = array (
    'post_type' = 'event',
    'posts_per_page' = -1,
    'post_status' => 'publish',
    'fields' => 'ids',
    'meta_query' => array (
      'relation' => 'AND'
      array (
        'key' => 'pt_eventSpeakerType',
        'value' => 'Lead Speaker',
        'compare' => '=',
      ),
    ),
  );
$posts = get_posts($args);
if($posts) :
  foreach($posts as $post):setup_postdata($post);
    echo get_post_meta($post->ID, 'pt_eventSpeaker' true).'<br>';
  endforeach;
endif;
wp_reset_postdata();

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

根据您的描述,我认为您没有正确创建SQL查询。方法get_posts($args);可能不会返回不同的结果,这可能是重复值的问题。希望对您有所帮助。

答案 1 :(得分:0)

我知道了。这可能不是最好的方法,但是它可以工作并且不需要任何查询更改:我发现了一个名为onDeviceTextRecognizer

的PHP数组函数。

首先,我必须在array_unique循环中返回所有发言人姓名,然后将其转换为自己的数组。它消除了foreach返回的所有其他对象。

然后使用WP_Query函数将这些分类到每个发言人姓名的单个条目数组中。

最后,使用另一个array_unique遍历这些名称并输出它们。

foreach