dmtrbskkv
@dmtrbskkv
Кодим и декодим, а иногда кино смотрим

Почему свой виджет WP не отображает другие виджеты ниже него?

Был добавлен виджет. Он корректно отображается в списке виджетов и добавлется в список активных виджетов на сайдбаре. На самом сайдбаре виджеты уже работали и все было хорошо. Однако, после добавления нового своего виджета, всё ниже в списке виджетов пропадает.

Т.е. у меня есть 5 виджетов, и если я добавлю свой 3м, то 4 и 5 не будут отображаться. Если я добавлю виджет 5м, то все 4 будут отображаться
код виджета

<?php

class sidebarOnDesktopHtml extends WP_Widget {

    /*
     * создание виджета
     */
    function __construct() {
        parent::__construct(
            'sidebar_on_desktop_html_widget',
            'HTML код, отображаемый только на desktop', // заголовок виджета
            array( 'description' => 'Позволяет добавить HTML код, который будет скрыт на мобильных устройствах' ) // описание
        );
    }

    /*
     * фронтэнд виджета
     */
    public function widget( $args, $instance ) {
        $title = apply_filters( 'widget_title', $instance['title'] ); // к заголовку применяем фильтр (необязательно)
        $html_code = $instance['html_code'];

        echo $html_code;

        wp_reset_postdata();
        echo $args['after_widget'];
    }

    /*
     * бэкэнд виджета
     */
    public function form( $instance ) {
        if ( isset( $instance[ 'title' ] ) ) {
            $title = $instance[ 'title' ];
        }
        if ( isset( $instance[ 'html_code' ] ) ) {
            $html_code = $instance[ 'html_code' ];
        }
        ?>
        <p>
            <label for="<?=$this->get_field_id( 'title' ); ?>">Заголовок</label>
            <input class="widefat" id="<?=$this->get_field_id( 'title' ); ?>" name="<?=$this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
        </p>
        <p>
            <label for="<?=$this->get_field_id( 'html_code' ); ?>">Содержимое:</label>
            <textarea id="<?=$this->get_field_id( 'html_code' ); ?>" name="<?=$this->get_field_name( 'html_code' ); ?>" class="widefat code content" rows="16" cols="20"><?php echo esc_attr( $html_code ); ?></textarea>
        </p>
        <?php
    }

    /*
     * сохранение настроек виджета
     */
    public function update( $new_instance, $old_instance ) {
        $instance = array();
        $instance['title'] =  !empty( $new_instance['title'] )  ? strip_tags( $new_instance['title'] ) : '';
        $instance['html_code'] =  !empty( $new_instance['html_code'])  ? $new_instance['html_code'] : '';
        return $instance;
    }
}

/*
 * регистрация виджета
 */
function sidebar_on_desktop_html() {
    register_widget( 'sidebarOnDesktopHtml' );
}
add_action( 'widgets_init', 'sidebar_on_desktop_html' );

  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы