2016-02-24 3 views
0

Я говорю о создании виджета, который расширяет дочерний виджет WP_Widget.Как расширить пользовательский виджет в wordpress?

Используя это в качестве ссылки: https://wordpress.stackexchange.com/questions/101438/how-to-extend-a-wp-widget-twice

Пример:

My_WidgetBase расширяет WP_Widget

My_Widget расширяет My_WidgetBase

Я хочу знать, как т o получите My_Widget, чтобы отобразить мои другие виджеты (его нет в настоящее время). Я получил My_WidgetBase для работы.

Это важно для моего каркаса. Я понимаю, что widget(), update() и form() должны быть переопределены, но я не мог найти ничего о том, чтобы сделать внука WP_Widget где угодно.

Пример:

class My_WidgetBase extends WP_Widget { 

    public function __construct($id = 'my-widget-base', $desc = 'My WidgetBase', $opts = array()) { 
     $widget_ops = array(); 
     parent::__construct($id, $desc, $widget_ops); 
    } 

    public function widget($args, $instance) { 
     die('function WP_Widget::widget() must be over-ridden in a sub-class.'); 
    } 


    public function update($new_instance, $old_instance) { 
     return $new_instance; 
    } 


    public function form($instance) { 
     echo '<p class="no-options-widget">' . __('There are no options for this widget.') . '</p>'; 
     return 'noform'; 
    } 

} 

    function RegisterMyWidgets() { 
     register_widget('My_WidgetBase'); 
    } 

add_action('widgets_init', 'RegisterMyWidgets'); 
+0

Вы регистрируетесь 'Bar'? Вы должны сделать это, используя 'function register_bar_widget() { register_widget ('Bar'); } add_action ('widgets_init', 'register_bar_widget'); ' –

+0

Да, я использую add_action ('widgets_init', функция() { \t register_widget ('My_Widget'); }); в каждом из моих классов. –

+0

Я верю, что вы меняете строку «My_Widget» там, верно? : P Не могли бы вы добавить код на свой вопрос? Может быть, это просто опечатка или что-то в этом роде. –

ответ

0

решаемых рыть дальше в эту тему: https://wordpress.stackexchange.com/questions/101438/how-to-extend-a-wp-widget-twice

Проблема не с моей реализацией классов, но, как я включил родитель в моей структуре. Я не работал с детьми и внуками в одном файле php, но два отдельных файла с разными каталогами.

Решение этой проблемы - вопрос правильного использования require_once() в каталоге моего класса внуков.

Смежные вопросы