从功能WordPress内部的小部件访问功能

时间:2020-06-17 12:48:40

标签: php wordpress

我有一些这样的小部件

<?php
/*
Plugin Name: MyWidget
Plugin URI: https:///
Description: 
License: GPL2
*/

// The widget class
class MyWidget extends WP_Widget
{

    // Main constructor
    public function __construct()
    {
        parent::__construct(
            'mywidgert',
            __('MyWidget', 'password_domain'),
            array(
                'customize_selective_refresh' => true,
            )
        );
    }

    public function form($instance)
    {
    }

    // Update widget settings
    public function update()
    {
    }


    public function widget()
    {

    }

    public function get_user_token()
    {
        return $login_token;
    }
}

function register_my_widget()
{
    register_widget('MyWidget');
}

add_action('widgets_init', 'register_my_widget');

当我尝试从另一个不在类内部的功能中的MyWiget类访问某些功能时

function export_database(){
 $this->get_user_token();
}

我也遇到了500个错误

$widget = new MyWidget();
$widget->get_user_token();

再次出现错误500,如何在我的函数 export_database 中访问MyWidget类中的其他函数,也请记住,这是wordpress,谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用add_action来实现它,首先在加载主题文件之前注册动作:

<?php
/*
Plugin Name: MyWidget
Plugin URI: https:///
Description: 
License: GPL2
*/

add_action( 'init', array ( 'MyWidget', 'init' ) );

// The widget class
class MyWidget extends WP_Widget
{
    ...
}

然后您可以在构造函数中注册您的操作,如下所示:

// Main constructor
public function __construct()
{
    ...
    add_action( 'get_user_token', array ( $this, 'get_user_token' ), 10, 1 );
}

您最终可以在主题或其他插件中调用do_action( 'get_user_token', 50 );

查看此相关文章:https://wordpress.stackexchange.com/questions/44708/using-a-plugin-class-inside-a-template