从函数中的小部件访问函数 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_databaseMyWidget 类中的其他一些函数,也请记住这是 wordpress,谢谢

您可以使用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