Вывод заметок (сообщений, ошибок) в верхней части страницы админ-панели WordPress
Для вывода заметок (сообщений, ошибок) в верхней части страницы админ-панели WordPress Мы будем использовать admin_notices. При выводе сообщений могут понадобиться css классы (Обязательный класс notice и к нему добавляем, в зависимости от нужд):
- notice — сообщение с серой полоской слева
- notice-error, либо error без класса notice — для ошибок с красной полоской слева
- notice-warning — для предупреждений с оранжевой полоской слева
- notice-success, либо updated без класса notice — для успешных операций с зеленой полоской слева
- update-nag — не подходит для обычных уведомлений администратора, так как к сообщению будет применяться другой стиль макета.Кроме того, это приведет к тому, что сообщение будет перемещено над заголовком страницы (<h1>), тем самым семантически установив его приоритет над другими уведомлениями, что вряд ли будет уместно в контексте плагина или темы.
- notice-info — информационная синяя полоска слева
- is-dismissible — чтобы добавить закрывающий значок к вашему сообщению через JavaScript. Однако его поведение применимо только к текущему экрану. Это не предотвратит повторное появление сообщения после повторной загрузки страницы или загрузки другой страницы.
Кроме привычных уже событий — для вывода поля два события: show_user_profile и edit_user_profile, а для обработки данных personal_options_update и edit_user_profile_update, нам понадобятся ещё два события.
- load-user-edit.php — будет выводить сообщения на странице user-edit.php, при редактировании администратором страницы юзера
- load-profile.php — будет выводить сообщения на странице profile.php, когда пользователь редактирует свой профиль
В качестве примера будем выводить поле для ввода номера телефона
if(!function_exists('VAB_user_fields')){ function VAB_user_fields($user){ global $pagenow; if($pagenow=='profile.php'||$pagenow=='user-edit.php'){ wp_nonce_field('VAB_mode_ufields_nonce','VAB_ufields_nonce'); $id=$user->ID; $myTel=get_the_author_meta('myTel',$id);//получаем мета данные с ключом myTel для текущего пользователя echo'<input name="myTel" id="myTel" type="tel" value="'.$myTel.'">'; }}} add_action('show_user_profile','VAB_user_fields'); add_action('edit_user_profile','VAB_user_fields');
Можно, при желании, добавить placeholder или pattern для отображения требуемой маки.
Далее будем обрабатывать введенные данные
if(!function_exists('save_VAB_user_fields')){ function save_VAB_user_fields($user_id){ $nonce=filter_input(INPUT_POST,'VAB_ufields_nonce',FILTER_SANITIZE_STRING); if(!$nonce){return;}//проверяем наши nonce поля if(!wp_verify_nonce($nonce,'VAB_mode_ufields_nonce')){return;}//проверяем наши nonce поля $myTel=get_the_author_meta('myTel',$user_id); $newmyTel=$_POST['myTel'];//проверяем отправку пост данных if(!empty($newmyTel)){//если данные отправлены if(!preg_match("/^\+(79)[\d]{9}$/m",$newmyTel)){//если проверку не проходим $erR='<div class="notice notice-info"><p><strong>'.__('Ошибка','VAB').'</strong>: '.__('Поле','VAB').' «'.__('Мой мобильный','VAB').'» '.__('не обновлено','VAB').' - '.__('Телефон задан в неверном формате','VAB').'</p></div>';//формируем сообщение set_transient('erRorPhone',array('nonce'=>$erR),10);//создаем временную опцию в базе и сохраняем в ней сообщение на 10 секунд }else{update_user_meta($user_id,'myTel',$newmyTel);}//иначе прошла проверка - обновляем данные }else{delete_user_meta($user_id,'myTel');}//иначе поле пустое. будем удалять мета данные }} add_action('personal_options_update','save_VAB_user_fields'); add_action('edit_user_profile_update','save_VAB_user_fields');
Ну и собственно вывод сообщения
Развернуть спойлер
if(!function_exists('VAB_add_error')){ function VAB_add_error(){ $data=get_transient('erRorPhone');//проверяем в базе наличие временной опции if($data&&$data['nonce']){//проверяем ее содержимое add_action('admin_notices','VAB_show_error');}}}//запускаем событие admin_notices add_action('load-user-edit.php','VAB_add_error'); add_action('load-profile.php','VAB_add_error'); if(!function_exists('VAB_show_error')){ function VAB_show_error(){ $data=get_transient('erRorPhone');$erRorMessage=''; if($data&&$data['nonce']){$erRorMessage=$data['nonce'];} echo$erRorMessage;}}//выводим на экран содержимое временной опции
Смотреть видео на rutube канале «Вывод заметок (сообщений, ошибок) в верхней части страницы админ-панели WordPress»
Смотреть видео на ютуб канале «Вывод заметок (сообщений, ошибок) в верхней части страницы админ-панели WordPress»
Кастомные поля