Как удалить результат дублирования полей ACF в l oop wordpress - PullRequest
0 голосов
/ 10 марта 2020

У меня есть один пользовательский тип записи, и я создал одно поле выбора с помощью acf. Мне нужно удалить в l oop, обычный результат опции.

<?php
    $args = array(
        'post_type'     => 'agentiestero',
        'post_status' => 'publish',
        'posts_per_page' => 150,
        'orderby'=> 'title', 
        'order' => 'ASC'
    );
    $the_query = new WP_Query( $args );                                                         
?>
<?php if( $the_query->have_posts() ): ?>
    <?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>                                                            

        <option value="<?php the_field('localita_estero'); ?>"><?php the_field('localita_estero'); ?></option>

    <?php endwhile; ?>
<?php endif; ?>

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Перебор постов не лучший вариант здесь. Скорее всего, вам нужно перебрать варианты выбора поля ACF select. Для этого вам нужно найти ключ поля вашего поля (например, field_5bf68deadbeef) и получить объект поля, чтобы получить от него все возможные варианты.

Замените ваш l oop выше следующим:

$localization_field = get_field_object('field_5bf68deadbeef');                  

foreach ($localization_field['choices'] as $key => $label) {                    
?>                                                                              
    <option value="<?= $key ?>"> <?= $label ?> </option>                        
<?php                                                                           
}         

Этот код получит определение вашего поля Select и будет перебирать все возможные варианты. Предполагая, что вы выбираете значение: текстовые пары, оно вставит значение как <option value="...">, а текст как метку.

0 голосов
/ 10 марта 2020

Использовать массив для очистки результата:

    <?php
        $result = array();
         if( $the_query->have_posts() ): ?>
        <?php while( $the_query->have_posts() ) : $the_query->the_post(); 
            $field = get_field('localita_estero');
            if(in_array($field,$result))
                continue;
            $result[] = $field;
?>                                                            
            <option value="<?php echo $field; ?>"><?php echo $field; ?></option>

        <?php endwhile; ?>
    <?php endif; ?>
...