Wordpress Получить уникальные значения настраиваемых полей в списке

У меня есть целый список директоров, но я хотел бы отображать только их уникальные имена, а не дубликаты. Нечто похожее

директор А, директор Б, директор С,...

НЕ

директор 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 ответа

Решение

Вы не храните имя директора в $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;
 }

Попробуйте использовать стандартный запрос, как это

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);

array_unique сделает то, что вы хотите. Однако, глядя на ваш код, вы не присвоили никаких данных массиву $alldirectors. Попробуйте эту строку:

$alldirectors = get_post_meta(blah blah); 

вместо

$director = get_post_meta(blah blah);
Другие вопросы по тегам