Intereting Posts
Переписать правила и запрос для виртуальной страницы Перенаправление пользователя после обновления профиля? вызывать строку / функцию из базы данных Как я могу использовать 'edit_form_after_title' условно? Каков рекомендуемый способ структурирования большого количества плагинов, общих функций и общих зависимостей на сайте WordPress? Использование импортера на сервере IIS Добавить drop down в wordpress крошечный редактор mce всплывает Как я могу связать пользовательские типы сообщений? Как реализовать комментарии по отдельным полям в WordPress? загрузить определенный контент только на первой странице разбивки на страницы Могу ли я помешать авторам изменить шрифт в своем сообщении? Использование углеродных полей в пользовательском классе плагинов Единый знак между двумя сайтами wordpress Практическое руководство. Когда создается группа bp, автоматически создайте под-форум Установите редактор WordPress TinyMCE для чтения

Как реализовать вывод ошибок виджета с проверкой данных?

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

Возможно, он создал функционал?

class My_Widget extends WP_Widget { /** * Sets up the widgets name etc */ public function __construct() { $widget_ops = array( 'classname' => 'my_widget', 'description' => 'My Widget is awesome', ); parent::__construct( 'my_widget', 'My Widget', $widget_ops ); } /** * Outputs the content of the widget * * @param array $args * @param array $instance */ public function widget( $args, $instance ) { echo $args['before_widget']; echo $instance['title']; echo $args['after_widget']; } /** * Outputs the options form on admin * * @param array $instance The widget options */ public function form( $instance ) { $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( 'New title', 'text_domain' ); ?> <p> <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Title:', 'text_domain' ); ?></label> <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>"> </p> <?php } /** * Processing widget options on save * * @param array $new_instance The new options * @param array $old_instance The previous options */ public function update( $new_instance, $old_instance ) { // !!!!!!! if(empty($new_instance['title'])){ // !!!!! // How to make it clear to the user that he incorrectly filled field? // !!!!! return 'Error!'; }}} 

функция вопроса "update ($ new_instance, $ old_instance)"

Попробуй это:

 class My_Widget extends WP_Widget { /** * Sets up the widgets name etc */ public function __construct() { $widget_ops = array( 'classname' => 'my_widget', 'description' => 'My Widget is awesome', ); parent::__construct('my_widget', 'My Widget', $widget_ops); } /** * Outputs the content of the widget * * @param array $args * @param array $instance */ public function widget($args, $instance) { echo $args['before_widget']; echo $instance['title']; echo $args['after_widget']; } /** * Outputs the options form on admin * * @param array $instance The widget options */ public function form($instance) { $title = !empty($instance['title']) ? $instance['title'] : esc_html__('New title', 'text_domain'); if(isset($instance['error'])){ echo $instance['error']; } ?> <p> <label for="<?php echo esc_attr($this->get_field_id('title')); ?>"><?php esc_attr_e('Title:', 'text_domain'); ?></label> <input class="widefat" id="<?php echo esc_attr($this->get_field_id('title')); ?>" name="<?php echo esc_attr($this->get_field_name('title')); ?>" type="text" value="<?php echo esc_attr($title); ?>"> </p> <?php } /** * Processing widget options on save * * @param array $new_instance The new options * @param array $old_instance The previous options */ public function update($new_instance, $old_instance) { // !!!!!!! if (empty($new_instance['title'])) { $instance['error'] = "ERROR!! title empty"; }else{ $instance['title'] = strip_tags( $new_instance['title'] ); } return $instance; } } 

вы также можете проверить значение error в widget function чтобы сказать, что данные недействительны и данные виджета необходимо обновить.