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

如何在wordpress中扩展自定义小部件?,wordpress,widget,extend,grandchild,Wordpress,Widget,Extend,Grandchild,我说的是制作一个widget,它扩展了WP_widget的子widget 以此为参考: 例如: My_WidgetBase扩展了WP_小部件 我的Widget扩展了我的WidgetBase 我想知道如何让我的_小部件与我的其他小部件一起显示(目前还没有)。我已经让我的WidgetBase工作了 这对我的框架很重要。我知道widget()、update()和form()必须被覆盖,但我在任何地方都找不到任何关于创建WP_widget孙子的内容 例如: class My_WidgetBase ext

我说的是制作一个widget,它扩展了WP_widget的子widget

以此为参考:

例如:

My_WidgetBase扩展了WP_小部件

我的Widget扩展了我的WidgetBase

我想知道如何让我的_小部件与我的其他小部件一起显示(目前还没有)。我已经让我的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' );
class My\u WidgetBase扩展WP\u小部件{
公共函数构造($id='mywidgetbase',$desc='mywidgetbase',$opts=array()){
$widget_ops=array();
父项::_构造($id、$desc、$widget_ops);
}
公共函数小部件($args,$instance){
die('WP_Widget::Widget()函数必须在子类中被覆盖');
}
公共函数更新($new\u实例,$old\u实例){
返回$new_实例;
}
公共函数表($instance){
echo“

”。“(此小部件没有选项)。

”; 返回“noform”; } } 函数RegisterMyWidgets(){ 注册小部件(“My_WidgetBase”); } 添加_操作('widgets_init','RegisterMyWidgets');
解决了进一步挖掘此线程的问题:

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


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

您是否正在注册
Bar
?您应该使用
函数register\u bar\u widget(){register\u widget('bar');}add\u action('widgets\u init','register\u bar\u widget')是的,我正在使用add_操作('widgets_init',function(){register_widget('My_widget');});在我的每节课中。我相信你正在更改其中的“my_Widget”字符串,对吗?:你能给你的问题加上一些代码吗?可能只是打字错误之类的。是的,我正在为每个孩子、孙子等更改“我的小部件”。我不在存储这些文件的计算机旁,但我有一个工作的孩子小部件,我只是想知道如何制作孙子。如果它应该像再次创造一个孩子一样简单,那么是的,也许我有一个拼写错误:)。