【发布时间】:2015-10-24 06:45:00
【问题描述】:
我需要一些帮助,我在 stackoverflow 和整个网络上都遇到过很多这样的“类似”问题,但似乎没有任何帮助。
我是 wordpress 新手,开始使用类创建插件。当我运行插件时,它会抛出错误“调用未定义的函数 add_menu_page()”。我检查了 wordpress.org 上的支持文档,但这也无济于事 (https://codex.wordpress.org/Adding_Administration_Menus#Inserting_the_Pages)
下面是我的代码,你能告诉我我做错了什么吗:
class SetupAdminMenu {
public static function add_menu($menu)
{
add_action('admin_menu', self::load_menu($menu) );
//I've used it according to the docs as well
//add_action('admin_menu', array(self, self::load_menu($menu) );
}
public static function load_menu($menu)
{
$page = add_menu_page( $menu['page_title'], $menu['menu_title'], $menu['capability'], $menu['menu_slug'],
array(self,self::load_view($menu['function'])), $menu['icon_url'], $menu['position'] );
self::load_page($page);
}
protected static function load_view($view)
{
if ( !current_user_can( 'activate_plugins' ) ) {
wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
}
//The actual page to display
include_once($view);
}
protected static function load_page($page)
{
add_action( 'admin_print_styles-' . $page, 'admin_styles' );
}
}
谢谢大家
【问题讨论】:
-
你是从插件调用这个吗? WordPress 是否已加载?
-
您最初在哪里以及如何从您的班级
SetupAdminMenu中调用add_menu()? -
我已将插件分解为类,
add_menu()在类外部被称为“控制器”fi,您希望将其称为将管理菜单放在一起的“控制器”。细节$page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position被分配为一个数组,在wp 的add_action()之后调用add_menu($menu) will hand toload_menu()` 来创建菜单。不知道这是否有意义。