Добавить фильтр в поле отношения acf

Я использую wordpress 4.9.7и использую advanced custom fields 4.4.12.

В моем бэкенде у меня есть тип сообщения, который вызывается coins, у которого есть поле отношения related_coinsи текстовое поле, которое вызывается algorithm. В основном поле моих отношений создает отношение к типу пользовательских сообщений products. Таким образом, продукт может иметь отношение к нескольким алгоритмам.

В настоящее время я могу фильтровать только по типу сообщений. Тем не менее, я хотел бы фильтровать по пользовательскому полю coinтипа сообщения coin.

введите описание изображения здесь

Я попробовал следующее:

function graphic_card_products_query( $args, $field, $post_id ) {

    $args['meta_query'] = array(
        array(
        'key' => 'algorithm', // name of custom field
        'value' => 'related_coins',
        'compare' => 'LIKE'
        )
    )

    // return
    return $args;

}

// filter for every field
add_filter('acf/fields/relationship/query/name=related_coins', 'graphic_card_products_query', 10, 3);

В основном я пытаюсь получить список всех значений, которые algorithmимеет пользовательское поле , и передать его в качестве параметра фильтра обратно в поле отношений related_coin.

В настоящее время я ничего не получаю.

Любые предложения, что я делаю неправильно?

php,wordpress,advanced-custom-fields,

4

Ответов: 1


1

Я проверил это, используя ваш код в качестве базы, и я могу подтвердить, что он работает для меня. Я подробно расскажу, что я сделал.

Во-первых, вы, возможно, заметили это, но после вас не хватает точки с запятой meta_query. Поэтому я исправил это.

$args['meta_query'] = array(
    array(
    'key' => 'algorithm', // name of custom field
    'value' => 'related_coins',
    'compare' => 'LIKE'
    )
); // <-- this one!

Затем я убедился, что поле, которое я фильтрует, действительно является полем «Отношения», а не другими типами «реляционных» полей (например, Post Object, Links, Taxonomy). У них есть собственные фильтры (ACF Reference: Filters)

Наконец, я подтвердил, что meta_query верен и что я ожидал. Таким образом, ваш meta_query ищет продукты с настраиваемым полевым алгоритмом и значением 'related_coins'. (Возможно, это правильно, но убедитесь, что значение, которое вы хотите, 'related_coins'так же звучит, как ключ, а не значение). Затем вы используете оператор LIKE, который будет соответствовать значениям с 'related_coins', содержащимся в значении. Например, это будет соответствовать '123_related_coins'и 'related_coins_123', а также просто «related_coins».

Как я уже сказал, это может быть то, что вы хотите, но просто понимаете, что это означает мета-запрос.

Надеюсь это поможет!

PHP, WordPress, Продвинутые таможенно-поля,
Похожие вопросы