@ligisayan

Как сохранить и вывести контент в созданном виджете wordpress?

Всем привет! Сайт на wordpress с установленным плагином advanced custom fields. Есть необходимость создать собственный виджет, в который включить некоторые поля из advanced custom fields.
Виджет создаю таким образом, включаю в него произвольные поля (вывод картинки)
class CustomWidget extends WP_Widget {
      function __construct() {
        parent::__construct(
          'custom_widget', // Base ID
          __('CustomWidget', 'text_domain'), // Name
          array( 'description' => __( 'Some CustomWidget', 'text_domain' ), ) 
        );
      } // widget actual processes
      public function widget( $args, $instance ) {
        echo "<p>custom widget appear</p>";
        echo "<p>". the_field('widget_banner') . "</p>";

} // outputs the content of the widget
        public function form( $instance ) {} // outputs the options form on admin
        public function update( $new_instance, $old_instance ) {} // processes widget options to be saved
    }
    // register Foo_Widget widget
    function register_foo_widget() {
        register_widget( 'CustomWidget' );
    }
    add_action( 'widgets_init', 'register_foo_widget' );

строка custom widget appear выводится, а вот произвольное поле the_field('widget_banner') нет, хотя в админке оно есть, его заполняю и нажимаю сохранить и оно сохраняется

вот, что выводит в аргументах во фронтенде
array(10) { ["name"]=> string(14) "Виджеты" ["id"]=> string(9) "sidebar-1" ["description"]=> string(36) "Добавьте сюда блоки" ["class"]=> string(0) "" ["before_widget"]=> string(64) "
" ["after_widget"]=> string(8) "
" ["before_title"]=> string(4) "
" ["after_title"]=> string(5) "
" ["widget_id"]=> string(15) "custom_widget-2" ["widget_name"]=> string(12) "CustomWidget" }
  • Вопрос задан
  • 434 просмотра
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Так у вас же все методы класса пустые, кроме конструктора, который инициализирует виджет.
public function widget( $args, $instance ) {} - вот тут вы пилите то, что виджет выдает на фронтенде
public function form( $instance ) {} - вот тут как он выглядит в админке (настройки виджета)
public function update( $new_instance, $old_instance ) {} - а вот тут сохранение настроек в админке
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы