[英]PHP, Wordpress Query, Combine Matched Results in 1
我在Wordpress中運行查詢以獲取自定義帖子類型的發言人列表。 即使說話者可能多次顯示為自定義帖子類型的元數據,我也只需要返回每個發言者的一個實例。
例如,如果我查詢並獲得這樣的列表:Bob,Bob,Bob,John,Sally,Bob,Bob,John,Bob
我希望它是:Bob,John,Sally
我不知道如何用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();
任何幫助表示贊賞!
根據您的描述,我假設您沒有正確創建SQL查詢。 方法get_posts($args);
可能不會返回不同的結果,這可能是您的重復值的問題。 我希望它有所幫助。
我想到了。 這可能不是最好的方法,但它可以工作,不需要對查詢進行任何更改:我發現了一個名為array_unique
的PHP數組函數
首先,我必須在foreach
循環中返回所有發言者名稱,然后將其轉換為自己的數組。 它擺脫了WP_Query
返回的所有其他對象。
然后使用array_unique
函數將這些函數排序為每個發言者名稱的單個條目數組。
最后,使用另一個foreach
這些名稱並輸出它們。
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);
$speakerName = get_post_meta($post->ID, 'pt_eventSpeaker', true);
$speakers[]= $speakerName;
endforeach;
$names = array_unique($speakers);
foreach($names as $name) :
echo $name.'<br>';
endforeach;
else :
echo 'No Posts Found.';
endif;
wp_reset_postdata();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.