Домой Wp-Recall WP-Recall: Проблемы и решения Запретить менять емайл пользователям
11ответ(ов) в теме
argosden
не в сети 1 год
На сайте с 21.06.2023
Участник
Тем 3
Сообщения 18
1
18:19
Версия WP-Recall: 16.26.5

В общем хотелось бы, чтоб в профиле у пользователей не было возможности менять емайл, как бы в других подобных решениях (у конкурентов) я видел, что там уже по умолчанию емайл нельзя сменить "простым смертным", но мне не хотелось бы сносить wp-recall ради этого (чтоб ставить аналог плагина, где из коробки смена мейла заблочена), может есть рабочее решение или кусок кода вставить в нужное место этого плагина (или самого WP) надо?

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

0
argosden
не в сети 1 год
На сайте с 21.06.2023
Участник
Тем 3
Сообщения 18
2
10:55

ладно, поставлю вопрос немного иначе (что сути не меняет), как можно отобразить поле емайл в списке полей профиля в админке плагина (раздел поля профиля)? И как правильно внести изменения в код, чтоб корректно работало там управление данным полем? Спасибо!

Активные поля профиля список

0
argosden
не в сети 1 год
На сайте с 21.06.2023
Участник
Тем 3
Сообщения 18
3
11:16

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

/** $profileFields[] = array( 'slug' => 'user_email', 'title' => __( 'E-mail', 'wp-recall' ), 'type' => 'email', 'required' => 1 ); */

Затем в панели управления полями создал новое поле емайл под айди user_email

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

PS: Все ещё жду продуктивной помощи, Спасибо!

0
argosden
не в сети 1 год
На сайте с 21.06.2023
Участник
Тем 3
Сообщения 18
4
12:05

UPD: нашел ещё один файл (class-rcl-profile-fields.php), где мне удалось вывести поле емайл в список активной зоны с полями профиля (в админке плагина который)

Добавил код:

					array(
						'slug'  => 'user_email',
						'title' => __( 'Email', 'wp-recall' ),
						'icon'  => 'fa-email',
						'type'  => 'email'
					)

да, поле емайла теперь вывелось для управления и как бы заменило поле, которое я ранее создавал в посте выше (пропала иконка удаления, что говорит об основном поле профиля), но при установке "Редактирует только админ", по факту юзер тоже может изменять свой емайл со страницы своего профиля (если в инспекторе кода опять же подсунет нужное поле).

Остался вопрос - как "сказать" обработчику и где, чтоб в случае попытки изменения емайла пользователем, он ему выбивал ошибку на запрет редактирования этого поля?

0
василий
не в сети 4 часа
На сайте с 20.03.2013
Участник
Тем 25
Сообщения 178
5
13:53

Может вам подойдет такое решение?
add_filter( 'custom_field_profile', 'del_profile_field_email' );
function del_profile_field_email( $field ){
if ($field['slug']=='user_email')
unset($field);
return $field;
}

add_filter( 'rcl_profile_fields', 'add_profile_my_field_email' );
function add_profile_my_field_email( $fields ){
global $user_LK;
$user_info = get_userdata($user_LK);
$new_fields[] = array(
'type' => 'custom',
'slug' => 'my_email',
'title' => 'Email',
'content'=>$user_info->user_email

);
foreach ( $fields as $field) {
$new_fields[] = $field ;
}
return $new_fields;
}

Так точно пользователю в лк свой адрес не изменить. Да и исходный код плагина не надо трогать что черевато последствиями.

0
argosden
не в сети 1 год
На сайте с 21.06.2023
Участник
Тем 3
Сообщения 18
6
14:42

василий сказал(а)
Может вам подойдет такое решение?
add_filter( 'custom_field_profile', 'del_profile_field_email' );
function del_profile_field_email( $field ){
if ($field['slug']=='user_email')
unset($field);
return $field;
}

add_filter( 'rcl_profile_fields', 'add_profile_my_field_email' );
function add_profile_my_field_email( $fields ){
global $user_LK;
$user_info = get_userdata($user_LK);
$new_fields[] = array(
'type' => 'custom',
'slug' => 'my_email',
'title' => 'Email',
'content'=>$user_info->user_email

);
foreach ( $fields as $field) {
$new_fields[] = $field ;
}
return $new_fields;
}

Так точно пользователю в лк свой адрес не изменить. Да и исходный код плагина не надо трогать что черевато последствиями.

Благодарю, а можете ещё подсказать где сей код разместить?

0
василий
не в сети 4 часа
На сайте с 20.03.2013
Участник
Тем 25
Сообщения 178
7
14:44

Самый простой и распространенный вариант в файле функций вашей активной темы вордпресс.

0
argosden
не в сети 1 год
На сайте с 21.06.2023
Участник
Тем 3
Сообщения 18
8
14:45

василий сказал(а)
Самый простой и распространенный вариант в файле функций вашей активной темы вордпресс.

хорошо, попробую. Спасибо.

0
василий
не в сети 4 часа
На сайте с 20.03.2013
Участник
Тем 25
Сообщения 178
9
14:46

Работает так. Убирает lефолтное поле для email и выводит email пользователя не в виде поля

0
argosden
не в сети 1 год
На сайте с 21.06.2023
Участник
Тем 3
Сообщения 18
10
14:50

василий сказал(а)
Работает так. Убирает lефолтное поле для email и выводит email пользователя не в виде поля

Ну по типу как логин, в дисабледе-инпюте?

0
argosden
не в сети 1 год
На сайте с 21.06.2023
Участник
Тем 3
Сообщения 18
11
16:46

Код вставил, вроде работает. В профиле пользователя теперь емайл отображается без поля. Благодарю, в рамках этой темы проблема решена... Теперь другие буду решать...

0
Вы не имеете права на публикацию сообщений в этой теме