WP_Widget::__Construction()函数的参数太少,

时间:2021-02-21 作者:aitor

第一次使用自定义小部件。我试着这样做:

<?php
namespace App;

class My_Widget extends \\WP_Widget {
    function My_Widget() {

        $widget_ops = [
            \'name\' => \'My widget\',
            \'description\' => \'My description\'
        ];
        parent::__construct( \'My_Widget\', \'My widget\', $widget_ops );
    }
}

function load_widget() {
    register_widget( \'App\\\\my_widget\' );
}
add_action( \'widgets_init\', __NAMESPACE__ . \'\\\\load_widget\' );
我得到这个错误:

Too few arguments to function WP_Widget::__construct(), 0 passed in /srv/www/contraindicaciones.net/current/web/wp/wp-includes/class-wp-widget-factory.php on line 61 and at least 2 expected
我做错了什么?谢谢

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您正在使用一种非常过时的创建小部件的方法。您应该使用__construct() 函数,而不是命名函数,作为构造函数,as documented.

namespace App;

class My_Widget extends \\WP_Widget {
    function __construct() {

        $widget_ops = [
            \'name\' => \'My widget\',
            \'description\' => \'My description\'
        ];
        parent::__construct( \'My_Widget\', \'My widget\', $widget_ops );
    }
}

function load_widget() {
    register_widget( \'App\\\\my_widget\' );
}
add_action( \'widgets_init\', __NAMESPACE__ . \'\\\\load_widget\' );

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'