看来wp_register_sidebar_widget
是小部件早期实现中非常过时的函数。显然,在当时,小部件只能使用一次,输出回调名称似乎是小部件唯一的原因,尽管存在ID。这些小部件的一次性使用性质似乎不是故意的。
考虑到它的年龄,我建议使用基于register_widget()
. 要用相同的输出注册3个小部件,您需要为小部件创建一个类,并添加一些额外的内容,然后注册3个不同的实例。
function wpse_292985_widget_display( $args ) {
echo \'<p>\' . $args[\'widget_name\'] . \'</p>\';
}
class WPSE_292985_Widget extends WP_Widget {
function __construct( $id, $name, $widget_ops ) {
parent::__construct( $id, $name, $widget_ops );
}
function widget( $args, $instance ) {
wpse_292985_widget_display( $args );
}
}
function wpse_292985_register_widgets() {
register_widget( new WPSE_292985_Widget(
\'first\',
\'First Widget\',
[\'description\' => \'This is the first widget.\']
) );
register_widget( new WPSE_292985_Widget(
\'second\',
\'Second Widget\',
[\'description\' => \'This is the second widget.\']
) );
register_widget( new WPSE_292985_Widget(
\'third\',
\'Third Widget\',
[\'description\' => \'This is the third widget.\']
) );
}
add_action( \'widgets_init\', \'wpse_292985_register_widgets\' );
这里发生的第一件事是定义我们希望小部件输出的函数。它接受
$args
作为我们将在widget类中传递的参数。
下一位是小部件的类。这个类只是通用WordPress小部件类的一个副本,但我们正在设置widget()
方法输出函数。
然后,通过创建widget类的新实例并将其传递到register_widget()
.