Виджеты в WordPress позволяют облегчить пользователям процесс размещения элементов на своем сайте. Существует много различных тем и плагинов для WordPress, которые используют виджеты, дающие возможность пользователям создавать свои собственные макеты. Есть различные плагины для улучшения управления виджетами. В данной статье мы покажем вам, как создать произвольный виджет для своего сайта WordPress.

Что собой представляет WordPress-виджет?

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

Конечно, как пользователь, вы всегда можете создавать свои собственные виджеты, которые впоследствии вы сможете использовать в любой теме.

Создание виджета в WordPress

Код виджета можно оформить двумя способами: либо добавить его в файл functions.php вашей темы, либо создать отдельный функциональный плагин.

В данном руководстве мы создадим простой виджет, который просто приветствует посетителей. Скопируйте следующий код и поместите его в плагин или в functions.php вашей темы.

<br /><br />// Creating the widget<br />class wpb_widget extends WP_Widget {<br /><br />function __construct() {<br />parent::__construct(<br />// Base ID of your widget<br />'wpb_widget', <br /><br />// Widget name will appear in UI<br />__('WPBeginner Widget', 'wpb_widget_domain'), <br /><br />// Widget description<br />array( 'description' => __( 'Sample widget based on WPBeginner Tutorial', 'wpb_widget_domain' ), )<br />);<br />}<br /><br />// Creating widget front-end<br />// This is where the action happens<br />public function widget( $args, $instance ) {<br />$title = apply_filters( 'widget_title', $instance['title'] );<br />// before and after widget arguments are defined by themes<br />echo $args['before_widget'];<br />if ( ! empty( $title ) )<br />echo $args['before_title'] . $title . $args['after_title'];<br /><br />// This is where you run the code and display the output<br />echo __( 'Hello, World!', 'wpb_widget_domain' );<br />echo $args['after_widget'];<br />}<br /><br />// Widget Backend<br />public function form( $instance ) {<br />if ( isset( $instance[ 'title' ] ) ) {<br />$title = $instance[ 'title' ];<br />}<br />else {<br />$title = __( 'New title', 'wpb_widget_domain' );<br />}<br />// Widget admin form<br />?><br /><br /><label for="<?php echo $this->get_field_id( 'title' ); ?>"><!--?php _e( 'Title:' ); ?--></label><br /><input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" type="text" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>" />
<br /><br /><!--?php <br ?-->}<br /><br />// Updating widget replacing old instances with new<br />public function update( $new_instance, $old_instance ) {<br />$instance = array();<br />$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';<br />return $instance;<br />}<br />} // Class wpb_widget ends here<br /><br />// Register and load the widget<br />function wpb_load_widget() {<br /><%%KEEPWHITESPACE%%>	register_widget( 'wpb_widget' );<br />}<br />add_action( 'widgets_init', 'wpb_load_widget' );<br /><br />