我有两个小部件。它们是在同一个文件小部件中创建的。php。如果我只保留一个小部件,那么它将不会出现任何问题。但当它们在一起时,一个将停止工作(它将不可拖动)。
我的代码如下。
class Widget_1 extends WP_Widget {
//setup the widget name, description, etc...
public function __construct() {
$widget_ops = array(
\'classname\' => \'widget1\',
\'description\' => \'Description\',
);
parent::__construct( \'widget1\', \'Widget 1\', $widget_ops );
}
//back-end display of widget
public function form( $instance ) {
echo \'<p><strong>Some text here</p>\';
}
//front-end display of widget
public function widget( $args, $instance ) {
echo $args[\'before_widget\'];
//there are fields in between this
echo $args[\'after_widget\'];
}
}
add_action( \'widgets_init\', function() {
register_widget( \'Widget_1\' );
} );
class Widget_2 extends WP_Widget {
//setup the widget name, description, etc...
public function __construct() {
$widget_ops = array(
\'classname\' => \'widget2\',
\'description\' => \'Description\',
);
parent::__construct( \'widget2\', \'Widget 2\', $widget_ops );
}
//back-end display of widget
public function form( $instance ) {
echo \'<p><strong>Sometext here</p>\';
}
//front-end display of widget
public function widget( $args, $instance ) {
echo $args[\'before_widget\'];
//there are fields in between this
echo $args[\'after_widget\'];
}
}
add_action( \'widgets_init\', function() {
register_widget( \'Widget_2\' );
} );
当我更改
public function form( $instance )
至
public function forms( $instance )
两者都开始工作,但保存按钮不会为一个插件显示。
谢谢
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
原因很简单,很容易被忽视。。。它与将两个小部件放在同一个文件或类似的文件中无关。。。
让我们看看负责打印小部件表单的代码:
public function form( $instance ) {
echo \'<p><strong>Sometext here</p>\';
}
你现在看到了吗?那里有未关闭的标签。。。
您打开<p>
标记,然后打开<strong>
标记,切勿关闭。这会导致不正确的JS行为-因此无法拖动(&;删除第二个小部件。。。