在开发插件时,变量$staging_site
分配了一个值,例如。,$staging_site = \'some_value\'
在插件的php文件中。稍后在同一文件中,函数定义为
function stl_page($stagingSite) {
$url = get_site_url();
$allowed = strpos($url, $stagingSite) > 0;
...
}
进一步的背景:
add_action(\'admin_menu\', \'stl_action_page\');
function stl_action_page($stagingSite) {
add_submenu_page(
\'tools.php\', \'STL Update\', \'STL Update\', \'manage_options\', \'update_live\', [\'stl_page\', \'stagingSite\' => $stagingSite]);
add_action(\'admin_footer\', \'stl_script\');
}
然而,在admin中访问插件时,会出现以下情况:
警告:call\\u user\\u func\\u array()要求参数1是有效的回调,第二个数组成员不是有效的方法
最合适的回答,由SO网友:Tom J Nowell 整理而成
您致电:
add_submenu_page( \'tools.php\', \'STL Update\', \'STL Update\', \'manage_options\', \'update_live\', [\'stl_page\', \'stagingSite\' => $stagingSite]);
请注意,您传递的第6个参数是
[\'stl_page\', \'stagingSite\' => $stagingSite]
这不是
callable
类型和a
callable
应为。
callable
可以是:
\'function_name\'
[ $object, \'method_name\' ]
[ \'class\', \'static_method_name\' ]
function() { /* I\'m a lambda/closure/anonymous function yay */ }
在您的示例中,它期望数组中的第二个内容是包含函数名的字符串,而不是得到以下内容:
\'stagingSite\' => $stagingSite
不知道该怎么办。这没有多大意义,尤其是因为
admin_menu
操作不传递参数,因此永远不会有
$stagingSite
.
因此,请删除$stagingSite
函数中的参数,并传递callable
值告诉WP要调用什么来显示该子菜单页。
作为旁注,我怀疑您这样做是为了将一个变量传递给函数,您不能通过可调用函数来实现,在这种情况下也不需要这样做