Wordpress - Получить все сообщения по типу 'post_type', затем отфильтровать по таксономии - PullRequest
4 голосов
/ 20 февраля 2020


У меня установлена ​​Wordpress с установленными ACF (Advanced Custom Fields). Я создал тип записи класса, и у каждого класса есть значение «Местоположение».
Как я могу получить каждый класс и получить местоположение, выбранное для этого класса? В настоящее время я использую эту функцию для получения имени «Программы»:

<code><pre>
    $args = array(
        'post_type' => 'class',
        'posts_per_page' => -1,
    );
    $query = new WP_Query($args);
    if ($query->have_posts() ) : 
        while ( $query->have_posts() ) : $query->the_post();
            echo get_the_ID();
            echo get_the_title();
        endwhile;
    endif;

Я пытаюсь заполнить раскрывающийся список «Местоположение», который фильтрует следующий выпадающий список классов, доступных для этого места.
Любая помощь или совет будет принята с благодарностью. Спасибо

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Не уверен, что это то, о чем вы просите, но вот как вы можете вывести каждое место сообщения в своем запросе l oop. Просто обновите locations в функции get_the_terms так, как вы назвали таксономию.

if ($query->have_posts() ) : 
    while ( $query->have_posts() ) : $query->the_post();
        $locations = get_the_terms($post->ID, 'locations');

        echo get_the_ID();
        echo get_the_title();

        foreach ($locations as $location) :
          echo '<p>' . $location->name . '</p>';
        endforeach;
    endwhile;
endif;
0 голосов
/ 21 февраля 2020

Мне удалось найти решение, используя предыдущий ответ от trev.
Вот решение, которое я реализовал:

<code><pre>
$args = array(
    'post_type' => 'class',
    'posts_per_page' => -1,
);
$query = new WP_Query($args);
$classArray = [];
if ($query->have_posts() ) {
    while ( $query->have_posts() ) : $query->the_post();
        $id = get_the_ID();
        $location = wp_get_post_terms($id, 'location');
        $location = $location[0]->name;
        $classArray[] = array(
            'id'        => get_the_ID(),
            'name'  => html_entity_decode(get_the_title()),
            'location'  => $location
        );

    endwhile;
    wp_reset_postdata();
}

Это позволило мне создать массив, содержащий идентификатор класса, имя класса и местоположение, связанное с ним. Спасибо за ваш совет.

...