Как в WordPress создать свой виджет?
Решено
Хочу к своей теме создать виджет. Который просто будет выводить внесенную в него информацию.
1 Ответ(ы)
Ответ
Создайте отдельный файл с расширением .php подключите его к functions.php. В созданный файл скопируйте код (в самом коде легко разобраться, поэтому у вас не составит труда добавить или удалить элементы, поменять название или описание виджета):
<?php /** * Plugin Name: My widget))) */ add_action( 'widgets_init', 'my_widget' ); function my_widget() { register_widget( 'MY_Widget' ); } class MY_Widget extends WP_Widget { function MY_Widget() { $widget_ops = array( 'classname' => 'widget_kurs', 'description' => __('Виджет начала обучения и ближайших курсов ', 'widget_kurs') ); $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'widget_kurs-widget' ); $this->WP_Widget( 'widget_kurs-widget', __('widget_kurs Widget', 'widget_kurs'), $widget_ops, $control_ops ); } function widget( $args, $instance ) { extract( $args ); //Our variables from the widget settings. $title = apply_filters('widget_title', $instance['title'] ); $name = $instance['name']; $namea = $instance['namea']; echo $before_widget; // Display the widget title if ( $title ) echo $before_title . $title . $after_title; //Display the name if ( $name || $namea ) print "<a class='nk' href='$namea'>$name</a>"; echo $after_widget; } //Update the widget function update( $new_instance, $old_instance ) { $instance = $old_instance; //Strip tags from title and name to remove HTML $instance['title'] = strip_tags( $new_instance['title'] ); $instance['name'] = strip_tags( $new_instance['name'] ); $instance['namea'] = strip_tags( $new_instance['namea'] ); } function form( $instance ) { //Set up some default widget settings. $defaults = array( 'title' => __('widget_kurs', 'widget_kurs'); $instance = wp_parse_args( (array) $instance, $defaults ); ?> <p> <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Заголовок:', 'widget_kurs'); ?></label> <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:100%;" /> </p> <p> <label for="<?php echo $this->get_field_id( 'name' ); ?>"><?php _e('Название курса:', 'widget_kurs'); ?></label> <input id="<?php echo $this->get_field_id( 'name' ); ?>" name="<?php echo $this->get_field_name( 'name' ); ?>" value="<?php echo $instance['name']; ?>" style="width:100%;" /> </p> <p> <label for="<?php echo $this->get_field_id( 'namea' ); ?>"><?php _e('Ссылка на курс:', 'widget_kurs'); ?></label> <input id="<?php echo $this->get_field_id( 'namea' ); ?>" name="<?php echo $this->get_field_name( 'namea' ); ?>" value="<?php echo $instance['namea']; ?>" style="width:100%;" /> </p> <?php } } ?>