Здравствуйте ещё раз. Необходимо чтоб произвольные поля профиля созданные по инструкции
, взаимодействовали с этим дополнением. То есть чтоб пользователей можно было фильтровать и по произвольным полям созданным вручную кодом. Давайте пробовать разбираться)
Созданный массив полей по которым необходимо пользователей фильтровать уже есть?
Допустим ваши поля формируются функцией:
function get_master_form_fields(){ $fields = array( array( 'type' => 'select', 'slug' => 'user-smoke', 'title' => 'Отношение к курению', 'values' => array( 'Нейтральное' => 'Нейтральное', 'Негативное' => 'Негативное', 'Положительное' => 'Положительное' ) ), array( 'type' => 'runner', 'slug' => 'user-years', 'title' => 'Количество полных лет', 'value_min' => 10, 'value_max' => 100 ), array( 'type' => 'editor', 'slug' => 'user-description', 'title' => 'О себе', 'tinymce' => true ) ); return $fields; }
тогда их можно будет добавить в перечень дефолтных полей поискового фильтра таким образом:
add_filter('rcl_default_custom_fields', 'add_custom_user_profile_fields', 10, 2); function add_custom_user_profile_fields($fields, $managerId){ if($managerId != 'users_filter') return $fields; return array_merge($fields, get_master_form_fields()); }
В результате ваши поля появятся в списке дефолтных полей поискового фильтра и вы сможете добавлять их в фильтр
Протестировал, добавил приведённый вами код в файл функций темы. (только вставил в последней строке имя своей функции) Дополнение стало в настройках фильтра выводить нужные поля. Но когда произвожу по ним поиск, не ищет. Пользователи не найдены. Пишу всё правильно, то есть как написал в поле так и в поисковой строке.
function get_master_grafik_fields(){ $data1 = array( array( 'type' => 'text', 'slug' => 'text-nyanya', 'title' => 'Проверка', 'notice' => 'Выберете' ) ); return $fields; }
А в функшионс темы вставил
add_filter('rcl_default_custom_fields', 'add_custom_user_profile_fields', 10, 2); function add_custom_user_profile_fields($fields, $managerId){ if($managerId != 'users_filter') return $fields; return array_merge($fields, get_master_form_fields()); }
Сори что кодом. Через какой сервис вы вставляете код в сообщения форума?
Чето скрипт с pastebin.com не вставляется, может так ссылкой
Прошу прощения, в предыдущем сообщении ошибся, в функшионс темы я вставил уже код со своей функцией, вот такой
Кнопка "Многострочный код"
я в дополнении pro-версии городов и стран интеграцию такую делал - я поля и для админки внедрял фильтрами:
rcl_custom_field_options
rcl_default_profile_fields
и потом список так в фильтр поиска добавлял:
'usf_form_fields'
вроде работало. Но это полгода назад было. надо бы его доделать))
По моему примеру выше что я неуспел стереть?
Я посмотрел на тот пример что вам дал и понял что я там нагородил.
Но то что через фильтр usf_form_fields можно дополнить фильтр - делал и оно работало. вроде. Сильно не тестировал тогда.
Сейчас я не готов тот код развернуть у себя. Так что ни чем не помог вам
Вот страница настроек фильтра
, я добавляю в настройки поиска пару полей
, Всё естественно работает, никаких изменений в код мы ещё не делали, а вот теперь ставлю фильтр данный Андреем в конец файла функций темы (естетвенно в последней строке свою функцию формирующую массив полей ставлю).
add_filter('rcl_default_custom_fields', 'add_custom_user_profile_fields', 10, 2); function add_custom_user_profile_fields($fields, $managerId){ if($managerId != 'users_filter') return $fields; return array_merge($fields, get_master_grafik_fields()); }
Всё норм, поля в порядке, появляется нужное поле (у меня называется проверка)
Добавил его в фильтр. Ищу по нему, но увы пользователи не найдены
Пишу без ошибок, как заполнил поле, так и в поиске ввёл. В чём может быть проблема не знаю, надеюсь подскажете)
Наверное вы уже поняли что если я использую название приведённой вами функции для формирования массива полей get_master_form_fields() то фильтр срабатывает, работает как надо, а если любую другую свою функцию то нет. Но ведь мы для каждой новой вкладки делаем новую функцию для массива произвольных полей. Я думаю вы это уже поняли, это так на всякий случай, вдруг кому пригодится.
Ваша функция, как и приведенная мной из примера, должны выполнять только одну функцию - передавать массив с данными полей, если ваша ее выполняет, то никаких проблем быть не должно.
Заметил в вашей функции проблему, она должна выглядеть так:
function get_master_grafik_fields(){ $fields = array( array( 'type' => 'text', 'slug' => 'text-nyanya', 'title' => 'Проверка', 'notice' => 'Выберете' ) ); return $fields; }
проверьте работу с этой правкой
Дада я уже исправил переменную на $fileds, всё равно по этим полям не искало. У меня там просто было несколько переменных а вконце они все array_merge в $fileds. Сейчас я сделал просто одну fileds, всё проверил и заработало. Но всё работает, спасибо. Ещё момент, если кому из непрограммистов таких как я надо будет несколько массивов полей закинуть, то просто добавьте через запятую в фильтре типа вот так,
add_filter('rcl_default_custom_fields', 'add_custom_user_profile_fields', 10, 2); function add_custom_user_profile_fields($fields, $managerId){ if($managerId != 'users_filter') return $fields; return array_merge($fields, get_master_grafik_fields(), get_master_form_fields()); }
у меня сработало.