Приветствую всех!
Я хочу сделать фильтрацию через плагин Filter Everything.PRO своего поля ACF.
Подробно:
У меня есть поле ACF, которое находится во вложенности у других полей. Не уверен, нужно ли учитывать вложенность, но для подробности опишу. Схема:
1. group_64806835d0db2 - группа полей.
2. address_information - повторитель.
3. addresses - группа полей.
4. underground_stations - повторитель.
5. underground_station - нужное поле, объект записи.
1. Я иду в плагин FilterEverything.Pro. И задаю фильтр по кастомному полю, указывая ключ: underground_station.
Тут сразу вопрос. Правильно ли указывать ключ в таком формате? В документации не нашел этого момента, также не нашел и момента с учетом большой вложенности, влияет это на что-то или нет.
2. Добавляю код в файл функций, который указан в документации и указываю свой ключ:
add_filter('wpc_filter_post_meta_term_name', 'wpc_acf_labels_instead_of_values', 20, 2);
function wpc_acf_labels_instead_of_values($term_name, $meta_key) {
// Указываем ключи мета-полей, для которых нужно заменить значения на метки
$meta_keys = array('underground_station'); // Добавляем сюда ваше поле ACF
// Проверяем, нужно ли применять логику для данного мета-поля
if (in_array($meta_key, $meta_keys)) {
// Проверяем, доступна ли функция ACF
if (function_exists('acf_get_field')) {
// Получаем данные поля ACF
$field = acf_get_field($meta_key);
if ($field) {
// Получаем ключ поля
$field_key = $field['key'];
// Проверяем, есть ли у поля ACF выборы (choices)
$new_choices = [];
if (isset($field['choices']) && !empty($field['choices'])) {
foreach ($field['choices'] as $key => $value) {
// Приводим ключи к нижнему регистру для корректного сравнения
$new_key = mb_strtolower($key);
$new_choices[$new_key] = $value;
}
// Приводим название термина к нижнему регистру
$term_name_test = mb_strtolower($term_name);
// Если значение соответствует одному из выборов, заменяем его меткой
if (isset($new_choices[$term_name_test])) {
$term_name = $new_choices[$term_name_test];
}
}
}
}
}
return $term_name;
}
3. Ожидаю увидеть на странице, где вывожу фильтры свое поле, но его там нет.
4. Отсекая свои глупые ошибки:
1) плагин подключен, все работает. Фильтрация по другому полю проходит (не acf);
2) мета-ключ я передаю такой же, как указан при регистрации поля;
3) попытка добавить по алгоритму выше любое другое поле из асф: сделать поле тестовое, вписать в функцию, добавить фильтр.