我在wordpress中添加了一些自定义表,并尝试添加wp admin部分来管理它们。通过使用以下代码,我成功地在wp admin中添加了一个菜单项,但我无法调用驻留在我的主题文件夹中的php页面
add_menu_page(\'Private Messages\', \'Private Messages\', \'manage_options\',
\'message_admin\', \'message-admin.php\',
get_bloginfo(\'stylesheet_directory\').\'/style/images/message.png\');
在error\\u log中,它给了我这个错误
PHP警告:call\\u user\\u func\\u array()要求参数1为有效回调函数“message admin”。在/var/www/idon中找不到php或函数名无效。开发/工作包包括/插件。php第470行,参考:http://idon.dev/wp-admin/admin.php?page=message_admin
Update:
wordpress说
$函数
(字符串)(可选)用于显示菜单页面的页面内容的函数。默认值:无。从技术上讲,function参数是可选的,但如果没有提供,WordPress将假定包含PHP文件将生成管理屏幕,而不调用函数。Most plugin authors choose to put the
page-generating code in a function within their main plugin file. In
the event that the function parameter is specified, it is possible to
use any string for the file parameter. 这允许使用诸如?page=my\\u super\\u plugin\\u page而不是?page=我的超级插件/管理选项。php。
我知道这是什么意思
PHP警告:call\\u user\\u func\\u array()要求参数1是有效的回调函数
但我试图实现的是调用一个页面,而不是函数。根据wordpress的说法是可能的,如果我错了,可以指导我。
请注意,我不想在函数中包含页面,我更愿意将代码添加到函数中。
SO网友:s_ha_dum
错误告诉您问题所在。。。
PHP警告:call_user_func_array()
要求参数1为valid callback, function ...
您的“回调”不是函数。这是一个文件。这样不行。您需要一个助手函数来包含文件。类似于:
add_menu_page(
\'Private Messages\',
\'Private Messages\',
\'manage_options\',
\'message_admin\',
\'include_message_admin\',
get_bloginfo(\'stylesheet_directory\').\'/style/images/message.png\'
);
function include_message_admin() {
// include(\'/path/to/message-admin.php\');
// something like
include(get_template_directory().\'/message-admin.php\');
// or
include(get_stylesheet_directory().\'/message-admin.php\');
}