无法将变量传递给页面定义

时间:2017-10-05 作者:geoB

在开发插件时,变量$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是有效的回调,第二个数组成员不是有效的方法

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 类型和acallable 应为。

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要调用什么来显示该子菜单页。

作为旁注,我怀疑您这样做是为了将一个变量传递给函数,您不能通过可调用函数来实现,在这种情况下也不需要这样做

结束