ACF / load_field не работает для пользовательского объекта Post - PullRequest
0 голосов
/ 20 июня 2019

В пользовательском типе сообщения (пациент) у меня есть настраиваемое поле, которое является другим объектом сообщения типа (комната).Он выглядит как выпадающий список на WP-admin и перечисляет все комнаты.Я пытаюсь ограничить количество номеров в зависимости от их категории, поэтому будут отображаться только номера категории «свободные».Довольно прямолинейно.

Вот код, который я использую

add_filter('acf/load_field/name=room', 'populateRooms');
function populateRooms($field)
{
    $field['choices'] = array();
    wp_reset_query();
    $query = new WP_Query(array(
        'post_type' => 'room',
        'orderby' => 'menu_order',
        'order' => 'ASC',
        'posts_per_page' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => 'room_category',
                'field'=>'slug',
                'terms' => 'vacant',
            )
        )
    ));
    $field['choices'] = array();
    foreach ($query->posts as $room_id => $matched_room) {
        $choices[$matched_room->ID] = $matched_room->post_title;
    }
    if (is_array($choices)) {
        foreach ($choices as $key => $choice) {
            $field['choices'][$key] = $choice;
        }
    }
    wp_reset_query();
    return $field;
}

Когда я загружаю страницу, появляются все комнаты, включая те, которые не относятся к категории «свободные», то естьне то, что я хочу.Когда я повторяю выбор $, я получаю это:

enter image description here

, который показывает post_ID -> post_title, как и ожидалось.Однако отображаются все комнаты, а не только эти 3.

Что я здесь не так делаю?

1 Ответ

1 голос
/ 20 июня 2019

Я думаю, что вы хотите отфильтровать результаты поиска поля с помощью post_object/query вместо использования фильтра load_field.

То, что вы обновляете, похоже, для таких полей, как флажки, селекторы,переключатели и другие поля с параметрами.

add_filter('acf/fields/post_object/query/name=room', function ($args, $field, $id) {
    $args['tax_query'] = [
        [
            'taxonomy' => 'room_category',
            'field' => 'slug',
            'terms' => 'vacant'
        ]
    ];

    return $args;
}, 10, 3);

Для получения дополнительной информации: https://www.advancedcustomfields.com/resources/acf-fields-post_object-query/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...