Домой Каталог: Дополнения WP-Recall Users Filter Фильтр по полям созданных вручную кодом
16ответ(ов) в теме
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
1
16:31
Версия WP-Recall: 16.18.1
Версия дополнения: 1.2.2

Здравствуйте ещё раз. Необходимо чтоб произвольные поля профиля созданные по инструкции

Вы не можете просматривать опубликованные ссылки

, взаимодействовали с этим дополнением. То есть чтоб пользователей можно было фильтровать и по произвольным полям созданным вручную кодом. Давайте пробовать разбираться)

0
Андрей CS
не в сети 2 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16864
2
16:39

Созданный массив полей по которым необходимо пользователей фильтровать уже есть?
Допустим ваши поля формируются функцией:

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());
	
}

В результате ваши поля появятся в списке дефолтных полей поискового фильтра и вы сможете добавлять их в фильтр

2
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
3
17:22

Протестировал, добавил приведённый вами код в файл функций темы. (только вставил в последней строке имя своей функции) Дополнение стало в настройках фильтра выводить нужные поля. Но когда произвожу по ним поиск, не ищет. Пользователи не найдены. Пишу всё правильно, то есть как написал в поле так и в поисковой строке.

0
Андрей CS
не в сети 2 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16864
4
17:41

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

0
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
5
18:11

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());
	
}

Редакции сообщения
21.01.2020 18:11daniablagПричина: не указано
21.01.2020 18:36Дружаев Владимир (Otshelnik-Fm)Причина: не указано
0
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
6
18:22

Сори что кодом. Через какой сервис вы вставляете код в сообщения форума?
Чето скрипт с pastebin.com не вставляется, может так ссылкой

Вы не можете просматривать опубликованные ссылки

Прошу прощения, в предыдущем сообщении ошибся, в функшионс темы я вставил уже код со своей функцией, вот такой

Вы не можете просматривать опубликованные ссылки
Редакции сообщения
21.01.2020 18:23daniablagПричина: не указано
21.01.2020 18:29daniablagПричина: не указано
21.01.2020 18:38daniablagПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 53 минуты
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
7
18:43

Кнопка "Многострочный код"

Вы не можете просматривать опубликованные ссылки

я в дополнении pro-версии городов и стран интеграцию такую делал - я поля и для админки внедрял фильтрами:
rcl_custom_field_options
rcl_default_profile_fields

и потом список так в фильтр поиска добавлял:

'usf_form_fields'

вроде работало. Но это полгода назад было. надо бы его доделать))

Редакции сообщения
21.01.2020 18:45Дружаев Владимир (Otshelnik-Fm)Причина: Наговнокодил. Так нельзя))
0
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
8
18:53

Не, сейчас вообще поудалялись все поля в настройках фильтра в админке. Удаляю фильтр и тогда появляются поля в настройке фильтра, опять фильтр прописываю в функциях, исчезают все поля из настроек

0
Вова (Otshelnik-Fm)
не в сети 53 минуты
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
9
18:59

По моему примеру выше что я неуспел стереть?

Я посмотрел на тот пример что вам дал и понял что я там нагородил.

Но то что через фильтр usf_form_fields можно дополнить фильтр - делал и оно работало. вроде. Сильно не тестировал тогда.
Сейчас я не готов тот код развернуть у себя. Так что ни чем не помог вам

0
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
10
19:47

Вот страница настроек фильтра

Вы не можете просматривать опубликованные ссылки

, я добавляю в настройки поиска пару полей

Вы не можете просматривать опубликованные ссылки

, Всё естественно работает, никаких изменений в код мы ещё не делали, а вот теперь ставлю фильтр данный Андреем в конец файла функций темы (естетвенно в последней строке свою функцию формирующую массив полей ставлю).

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());
	
}

Всё норм, поля в порядке, появляется нужное поле (у меня называется проверка)

Вы не можете просматривать опубликованные ссылки

Добавил его в фильтр. Ищу по нему, но увы пользователи не найдены

Вы не можете просматривать опубликованные ссылки

Пишу без ошибок, как заполнил поле, так и в поиске ввёл. В чём может быть проблема не знаю, надеюсь подскажете)

0
Андрей CS
не в сети 2 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16864
11
20:16

я понял, до завтра подождите, сегодня уже не успею

0
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
12
21:15

Благодарю, буду ждать

0
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
13
22:27

Наверное вы уже поняли что если я использую название приведённой вами функции для формирования массива полей get_master_form_fields() то фильтр срабатывает, работает как надо, а если любую другую свою функцию то нет. Но ведь мы для каждой новой вкладки делаем новую функцию для массива произвольных полей. Я думаю вы это уже поняли, это так на всякий случай, вдруг кому пригодится.

0
Андрей CS
не в сети 2 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16864
14
23:20

Ваша функция, как и приведенная мной из примера, должны выполнять только одну функцию - передавать массив с данными полей, если ваша ее выполняет, то никаких проблем быть не должно.
Заметил в вашей функции проблему, она должна выглядеть так:

function get_master_grafik_fields(){
    $fields = array(
		array(
            'type' => 'text',
            'slug' => 'text-nyanya',
            'title' => 'Проверка',
			'notice' => 'Выберете'
        )
      
    );
		
    return $fields;
}

проверьте работу с этой правкой

0
daniablag
не в сети 7 месяцев
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
15
00:35

Дада я уже исправил переменную на $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());
	
}

у меня сработало.

2
Андрей CS
не в сети 2 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16864
16
10:24

Да, функция может работать с множеством массивов.
Рад, что все заработало.
Закрыто.

1
Тема закрыта. Публикация новых сообщений запрещена.