如何在Widget类中创建类

时间:2018-07-21 13:41:28

标签: php wordpress

让我先向您展示一个可以使用的演示,然后亲自看看问题所在:

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();中,但这也不起作用;

最终的目标是利用小部件类中的模型。

2 个答案:

答案 0 :(得分:0)

您可以通过按名称引用小部件来使用它:

[小部件widget_name =“您的自定义小部件”]

答案 1 :(得分:0)

因此,在添加Lambda并添加诸如$this->loader->add_action( 'plugins_loaded', $plugin_admin, 'Test' );之类的依赖项之后,我使它起作用。我相信可以在以下位置找到解决此问题的更好解释:https://wordpress.stackexchange.com/a/70060