Задать вопрос
Dunno2018
@Dunno2018

Почему в кастомном виджете пишется «Устаревший виджет»?

64203a98820ba478006345.jpeg
Код виджета:
<?php
class MyWidget_Search_Widget extends WP_Widget
{

    /**
     * General Setup
     */
    public function __construct() {

        /* Widget settings. */
        $widget_ops = array(
            'classname' => 'mywidget_search_widget',
            'description' => __('Виджет, который выводит персональный поиск')
        );
        /* Create the widget. */
        parent::__construct( 'mywidget_search_widget', 'mywidget | Персональный поиск', $widget_ops );
    }

    /**
     * Display Widget
     * @param array $args
     * @param array $instance
     */
    public function widget( $args, $instance )
    {
        extract( $args );

        $custom_placeholder = $instance['custom_placeholder'];

        // Display Widget
        ?>

        <div class="widget widget_search">

            <form role="search" method="get" id="searchform" action="<?php echo home_url("/"); ?>">

              <input class="input-search" type="search" name="s" value="" placeholder="<?php echo $custom_placeholder; ?>">
              <input type="hidden" name="post_type" value="post">
              <input type="submit" class="submit-search" value="">

            </form>

        </div>

        <?php

    }
    /**
     * Update Widget
     * @param array $new_instance
     * @param array $old_instance
     * @return array
     */
    public function update( $new_instance, $old_instance )
    {
        $instance = $old_instance;

        $instance['custom_placeholder'] = strip_tags( $new_instance['custom_placeholder'] );

        return $instance;
    }

    /**
     * Widget Settings
     * @param array $instance
     */
    public function form( $instance )
    {
        //default widget settings.
        $defaults = array(
            'custom_placeholder'		=> 'Поиск по Новостям',
        );
        $instance = wp_parse_args( (array) $instance, $defaults );

        ?>
        <p>
            <label for="<?php echo $this->get_field_id( 'custom_placeholder' ); ?>">Плейсхолдер</label>
            <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'custom_placeholder' ); ?>" name="<?php echo $this->get_field_name( 'custom_placeholder' ); ?>" value="<?php echo $instance['custom_placeholder']; ?>" />
        </p>

        <?php
    }
}
  • Вопрос задан
  • 208 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@weart
Потому что там теперь можно использовать блоки, написанные на реакт. А ваш код устарел лет на 5)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nefone
@nefone
Junior PHP разработчик
Начиная с WordPress версии 5.8 "классические" виджеты стали не актуальными.
На замену им пришли блоки из редактора записей Guttenberg.
Что бы вернуть поддержку классических виджетов, есть плагин Classic Widgets, но поддержка его не обещает быть вечной.

P.S. а вообще актуальнее будет осваивать новые возможности - это дает больше плюсов и более эффективно позволяет решать задачи.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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