在构造或初始化中添加管理菜单

时间:2013-03-29 作者:clockwiseq

我以为我在WordPress开发教育方面取得了进展,直到我偶然发现WordPress插件的模板,它使用了类对象。我很好,理解这些概念,我是一个。Net开发人员。但是,由于某些原因,我无法获得任何回调函数来正常工作。此时,我只需要一个管理菜单,当您单击该菜单项时,它会显示类似“PLEASE HELP ME!!!”的内容。看看我下面有什么,谁能解释一下我的错误吗?

class school_manager {
    function __construct() {
        add_action( \'init\', array( $this, \'init\' ) );
    }

    public function init(){
            add_action(\'admin_menu\', array(&$this, \'add_admin_menu\'));
        }

    public function add_admin_menu(){
        add_menu_page( \'School Manager Settings\', \'School Manager\', \'administrator\', \'school-manager-settings\', \'show_admin_settings_page\', null ); 
    }

    public function show_admin_settings_page(){
        echo \'<p>This is a test for the admin settings page.  Please work!</p>\';
    }
}
我的新菜单项确实出现了(就像我没有在插件体系结构中使用类对象时一样。但是,当我单击菜单项时,我得到以下错误:

警告:call\\U user\\U func\\U array()[函数.call user func array]:第一个参数应为有效回调,在H:\\root\\home\\xxxxx\\wp includes\\plugin中给出了“school\\u manager::create\\u admin\\u page”。php在线406

我正在尝试创建一个插件,它不仅有一个管理菜单和子菜单项,而且还想通过尝试遵循设置APIthis series. 因此,在我继续之前,这是让菜单项这样简单的东西发挥作用的关键点之一。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

您已给出的回调add_menu_page() 是静态函数,而不是类方法。它应该是:

add_menu_page( 
    \'School Manager Settings\', 
    \'School Manager\', 
    \'administrator\', 
    \'school-manager-settings\', 
    array ( $this, \'show_admin_settings_page\' )
);
请不要使用&$this 还有,这就是PHP 4.:)

我的演示插件T5 Admin Menu Demo 可能有助于理解其工作原理。

结束

相关推荐