Я использую расширенные настраиваемые поля на своем веб-сайте с полем выбора (type_evenement
) с 5 возможными значениями (val_1, val_2, val_3, val_4, val_5)
Я также использую wp-запрос на пользовательской странице шаблона для отображения сообщений из категории, для всех сообщений используется настраиваемое поле «Выбрать».
Я пытаюсь отобразить все выбранные значения на этой странице, но только один раз, поэтому я пытаюсь удалить двойные значения, используя array_unique, но это не работает.
Вот код, который я написал, чтобы отобразить значения внутри цикла, он отображает все значения, даже когда удваивается, например, val_1, val_3, val_4, val_2, val_1, val_1 …
<?php
// args
$today = date("Ymd");$args = array (
'category' => 5,
'posts_per_page' => -1,
'meta_key' => 'debut_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'fin_date',
'compare' => '>=',
'value' => $today,
)
),
);
// get results
$the_query = new WP_Query( $args );
// The Loop
?>
<?php if( $the_query->have_posts() ): ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php
$input = get_field('type_evenement');
echo($input);
?><?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
но при использовании array_unique больше ничего не отображается:
<?php
$input = get_field('type_evenement');
$result = array_unique($input);
echo($result);
?>
Я не понимаю, что я делаю неправильно, я знаю, что get_field возвращает массив, так что я думаю, что array_unique должен работать no?
Если кто-то может помочь мне с этим, было бы здорово!
большое спасибо
$input
это просто одно значение, а не массив. Дубликаты повторно присваиваются этому значению while loop
,
<?php while ( $the_query->have_posts() ) : $the_query->the_post();
$input = get_field('type_evenement');
echo($input);
Вы можете исправить запрос, который возвращает дубликат, но так как он выглядит как WordPress, это может не сработать.
Таким образом, вы можете заполнить массив первый, затем используйте array_unique()
а затем повторить значения
(или вы можете просто не добавлять значение снова, если временный массив уже содержит его):
$myArr = array();
while ( $the_query->have_posts() ) {
$the_query->the_post();
$input = get_field('type_evenement');
if (!in_array($input,$myArr)){
$myArr[] = $input;
}
}
foreach ($myArr AS $value){
echo $value; //unique values.
}
Других решений пока нет …