警告:WIDGET_TITLE筛选器缺少参数2

时间:2015-06-11 作者:Ahmed Saad

基于this question, 我出错了Warning: Missing argument 2 for....

对于一些由插件创建的小部件,会发生这种情况。

--编辑1--

下面是一个导致错误的简单小部件:

function my_new_widget_register() {
    register_widget( \'my_new_widget\' );
}
add_action(\'widgets_init\', \'my_new_widget_register\');

class my_new_widget extends WP_Widget {

    function my_new_widget() {
        // Instantiate the parent object
        parent::__construct( false, \'my_new_widget\' );
    }

    function widget( $args, $instance ) {
        // Widget output
            extract( $args );
            $title = apply_filters(\'widget_title\', $instance[\'title\']);
            echo $before_widget;
            echo $title;
            echo $after_widget;
    }
}
错误显然是由$title.

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

您向该过滤器传递的参数不超过个,因此任何需要多个参数的回调都不会得到它。内核总是这样调用此筛选器:

$title = apply_filters(
    \'widget_title\', 
    empty($instance[\'title\']) ? \'\' : $instance[\'title\'], 
    $instance, 
    $this->id_base
);
但你只是路过$instance[\'title\']. 添加缺少的参数,错误就会消失。

如果无法更改小部件,请更改过滤器回调的注册,并通过设置默认值使其他参数可选:

add_filter( \'widget_title\', \'my_widget_title_filter\', 10, 3 );

function my_widget_title_filter( $title, $instance = [], $id_base = \'\' ) {
    if ( \'\' === $id_base )
        return $title;

    // do something with the title, then
    return $title;
}

SO网友:Ahmed Saad

对函数中的参数进行小幅度更改后,“缺少参数”错误消失:

function remove_widget_title($title, $instance)
收件人:

function remove_widget_title($title, $instance = [])

结束

相关推荐

Dynamic Width of Widgets

好的,我在一个侧边栏中为最多6个小部件使用以下代码function s57d_sidebar1_params($params) { $sidebar_id = $params[0][\'id\']; if ( $sidebar_id == \'sidebar-1\' ) { $total_widgets = wp_get_sidebars_widgets(); $sidebar_widgets = count($total_wi