我正在尝试使用OOP方法编写插件。
class MySettingsPage
{
public function __construct() {
add_action( 'admin_menu', 'registration_plugin_menu' );
}
public function registration_plugin_menu() {
add_menu_page( 'Basic Registration Form', 'Basic Registration Plugin', 'manage_options', 'registration-plugin', 'my_plugin_options' );
}
public function my_plugin_options() {
//callback function
}
}
$settings = new MySettingsPage();
$settings->registration_plugin_menu();
$settings->my_plugin_options();
但是,我收到错误:
未捕获错误:调用未定义的函数add_menu_page()
答案 0 :(得分:2)
你需要通过一个钩子来呼叫add_menu_page
,例如admin_menu
。你在这里挂钩admin_menu:
add_action( 'admin_menu', array($this, 'registration_plugin_menu' ));
但你也直接在这里调用registration_plugin_menu,它将尝试立即运行add_menu_page
函数 - 在WP准备就绪之前:
$settings->registration_plugin_menu();
您不需要该行 - 它将在构造函数中自动调用。
仅供参考,您需要在构建器中的$this
调用中使用add_action
,因为您已在类中使用它。
<强>更新强>:
您还需要在add_menu_page中为my_plugin_options使用$ this,例如
add_menu_page( 'Basic Registration Form', 'Basic Registration Plugin', 'manage_options', 'registration-plugin', array($this, 'my_plugin_options') );
答案 1 :(得分:1)
试试这个
class MySettingsPage
{
public function __construct() {
add_action( 'admin_menu', array($this, 'registration_plugin_menu' ));
}
public function registration_plugin_menu() {
add_menu_page( 'Basic Registration Form', 'Basic Registration Plugin', 'manage_options', 'registration-plugin', array($this,'my_plugin_options') );
}
public function my_plugin_options() {
//callback function
}
}
$settings = new MySettingsPage();