未定义的add_menu_page()wordpress函数

时间:2017-09-05 05:39:51

标签: php wordpress

我正在尝试使用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()

2 个答案:

答案 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();

enter image description here