让我先向您展示一个可以使用的演示,然后亲自看看问题所在:
WidgetClass
class TestDemo_Widget extends WP_Widget {
public function __construct() {
parent::__construct(
false,
__( 'TestDemo' ),
[ 'description' => __( 'A module to display an event', 'demo' ) ] );
}
public function form( $instance ) {
?>
<p>
<!--get_field_id generates and ID for us to use in the update method-->
<label for="<?= $this->get_field_id( 'test' ); ?>">login text</label>
<input class="widefat" id="<?= $this->get_field_id( 'test' ); ?>"
name="<?= $this->get_field_name( 'test' ); ?>" type="text"
value="<?= esc_attr( $instance['test'] ) ?>" data-default-color="#FFF"/>
</p>
<?php
}
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['test'] = $new_instance['test'];
return $instance;
}
public function widget( $args, $instance ) {
$testObj = new Test();
echo "WIDGETS LOADED " $testObj->testParameter;
// expected result = "WIDGETS LOADED test successful"
}
}
演示(模型)类
class Test {
private $testParameter;
public function __construct() {
$this->testParameter = "test successful";
}
public function getTestParameter() {
return $this->testParameter;
}
public function setTestParameter( $testParameter) {
$this->testParameter= $testParameter;
}
}
上面的代码没有给我一个错误,但是它没有显示该小部件,并且还删除了顶部的管理栏。我的问题是:如何在小部件内调用新的课程?
我尝试在TestDemo_Widget
函数内添加一个参数,并在该参数内添加一个对象。这没用。
我还尝试将对象添加到update
函数内的$instance['customname'] = new Test();
中,但这也不起作用;
最终的目标是利用小部件类中的模型。
答案 0 :(得分:0)
您可以通过按名称引用小部件来使用它:
[小部件widget_name =“您的自定义小部件”]
答案 1 :(得分:0)
因此,在添加Lambda
并添加诸如$this->loader->add_action( 'plugins_loaded', $plugin_admin, 'Test' );
之类的依赖项之后,我使它起作用。我相信可以在以下位置找到解决此问题的更好解释:https://wordpress.stackexchange.com/a/70060。