Добавить фильтр в поле отношения acf - PullRequest
0 голосов
/ 06 июля 2018

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

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

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

enter image description here

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

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.

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

Есть предложения, что я делаю не так?

1 Ответ

0 голосов
/ 12 июля 2018

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

Во-первых, вы, возможно, заметили это, но вы пропустили точку с запятой после вашего 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: Фильтры)

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

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

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

...