В общем хотелось бы, чтоб в профиле у пользователей не было возможности менять емайл, как бы в других подобных решениях (у конкурентов) я видел, что там уже по умолчанию емайл нельзя сменить "простым смертным", но мне не хотелось бы сносить wp-recall ради этого (чтоб ставить аналог плагина, где из коробки смена мейла заблочена), может есть рабочее решение или кусок кода вставить в нужное место этого плагина (или самого WP) надо?
Все же уже настроил этот плагин, но вот поле емайл открытое для редактирования всем немного идет в разрез с тем, что нужно проекту.
Пока не придумал ничего лучше, чем закомментировать этот кусок кода в выводе поля в профиле пользователя:
/**
$profileFields[] = array(
'slug' => 'user_email',
'title' => __( 'E-mail', 'wp-recall' ),
'type' => 'email',
'required' => 1
);
*/
Затем в панели управления полями создал новое поле емайл под айди user_email
Я понимаю, что это кастыль-кастыльный и полного запрета на смену емайла пользователем я не добился, при желании немного продвинутый пользователь может сменить емейл тупо поставив нужное поле в инспекторе кода браузера... Ну по крайней мере теперь данная опция не так явно поддается изменению со стороны пользователя, как раньше...
PS: Все ещё жду продуктивной помощи, Спасибо!
UPD: нашел ещё один файл (class-rcl-profile-fields.php), где мне удалось вывести поле емайл в список активной зоны с полями профиля (в админке плагина который)
Добавил код:
array( 'slug' => 'user_email', 'title' => __( 'Email', 'wp-recall' ), 'icon' => 'fa-email', 'type' => 'email' )
да, поле емайла теперь вывелось для управления и как бы заменило поле, которое я ранее создавал в посте выше (пропала иконка удаления, что говорит об основном поле профиля), но при установке "Редактирует только админ", по факту юзер тоже может изменять свой емайл со страницы своего профиля (если в инспекторе кода опять же подсунет нужное поле).
Остался вопрос - как "сказать" обработчику и где, чтоб в случае попытки изменения емайла пользователем, он ему выбивал ошибку на запрет редактирования этого поля?
Может вам подойдет такое решение?
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;
}
Так точно пользователю в лк свой адрес не изменить. Да и исходный код плагина не надо трогать что черевато последствиями.
василий сказал(а)
Может вам подойдет такое решение?
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;
}Так точно пользователю в лк свой адрес не изменить. Да и исходный код плагина не надо трогать что черевато последствиями.
Благодарю, а можете ещё подсказать где сей код разместить?