如何在wordpress中扩展自定义小部件?

时间:2016-02-24 20:50:42

标签: wordpress widget extend grandchild

我正在谈论制作一个扩展WP_Widget的子窗口小部件的小部件。

将此作为参考:https://wordpress.stackexchange.com/questions/101438/how-to-extend-a-wp-widget-twice

示例:

My_WidgetBase 扩展 WP_Widget

My_Widget 扩展 My_WidgetBase

我想知道如何让 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' );

1 个答案:

答案 0 :(得分:0)

进一步深入研究这个话题:https://wordpress.stackexchange.com/questions/101438/how-to-extend-a-wp-widget-twice

问题不是我的类的实现,而是我如何在我的框架中包含父。我没有在同一个php文件中同时使用子孙,而是使用不同目录的两个单独文件。

解决这个问题是在我孙子类的目录中正确使用require_once()的问题。