Создаем виджет для шорткодов в WordPress

Это простой виджет, который позволит вам использовать шорткоды в ваших текстовых виджетах. В результате вы обнаружите новый виджет в разделе «Внешний вид — Виджеты» административной панели сайта под названием “Shortcodes”. Помещаем его в любой сайдбар вашего сайта и пользуемся возможностью вставлять в него шорткоды, которые будут срабатывать.

Добавляем следующий код в файл functions.php вашей темы:

class Shortcodes_Widget extends WP_Widget {
    /**
     * Widget constructor
     *
     * @desc устанавливаем дефолтные настройки и контролы для виджета
     */
    function Shortcodes_Widget () {
        /* Настройки виджета */
        $widget_ops = array (
            'classname' => 'widget_shortcodes',
            'description' => __( 'Show shortcodes' )        
        );
 
        /* Создаем виджет */
        $this->WP_Widget( 'shortcodes-widget', __( 'Shortcodes' ), $widget_ops );
    }
     
    /**
     * Выводим виджет
     *
     * Обрабатываем вывод виджета
     * @param array
     * @param array
     */
    function widget( $args, $instance ) {
         
        extract ($args);
         
        echo $before_widget;
         
        echo $before_title . $instance['title'] . $after_title;
             
        echo do_shortcode($instance['shortcodes']);
             
        echo $after_widget;
 
    }
     
    /**
     * Обновляем и сохраняем виджет
     *
     * @param array $new_instance
     * @param array $old_instance
     * @return array New widget values
     */
    function update ( $new_instance, $old_instance ) { 
        $old_instance['title'] = strip_tags( $new_instance['title'] );
        $old_instance['shortcodes'] = strip_tags( $new_instance['shortcodes'] );
             
        return $old_instance;
    }
     
    /**
     * Создаем контролы или настройки виджета
     *
     * @param array Return widget options form
     */
    function form ( $instance ) { ?>
        <p>
            <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php echo __( 'Title',"ait-theme" ); ?>:</label>
            <input type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>"class="widefat" style="width:100%;" />
            <label for="<?php echo $this->get_field_id( 'shortcodes' ); ?>"><?php echo __( 'Shortcodes' ); ?>:</label>
            <textarea id="<?php echo $this->get_field_id( 'shortcodes' ); ?>" name="<?php echo $this->get_field_name( 'shortcodes' ); ?>" style="width:100%;"><?php echo $instance['shortcodes']; ?></textarea>
        </p>
               
        <?php
    }
}
register_widget( 'Shortcodes_Widget' );
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top