我有一个奇怪的行为,我想知道......为什么。我为 WordPress 做了一个小部件插件,以允许设置各种东西(如宽度、位置、颜色等),我试图在前端使用它,但我被困在最基本的东西上。
我有这段代码可以正常工作:
add_filter( 'widget_display_callback', 'capture_widget', 100, 3 );
function capture_widget( $instance, $widget_class, $args ) {
$widget_class->widget( $args, $instance );
echo $widget_class->widget_options['classname'];
return false;
}
问题是我想把所有东西都搬到一个班级里。所以我这样做了:
class MyWidgets {
function __construct() {
add_filter( 'widget_display_callback ', array( $this, 'widget_display' ), 100, 3 );
}
public function widget_display( $instance, $widget_class, $args ){
$widget_class->widget( $args, $instance );
echo $widget_class->widget_options['classname'];
return false;
} // widget_display
}
new MyWidgets();
而且......它停止工作。一切都放在完全相同的文件中,但只有第一个版本可以工作。我没有任何错误,它只是没有做任何事情。我试图移动方法add_filter( 'widget_display_callback', 'capture_widget', 100, 3 );
内部的部分__construct
(但我让它调用类外函数)并且它继续工作,它在调用自包含方法时表现不佳。
有什么好的理由吗?我错过了什么?
谢谢!