我正在使用add\\u submenu\\u page()函数向插件添加一些选项。在Linux主机上,一切都正常工作,在Windows主机上,这5个子菜单以某种方式具有相同的链接,当我单击它们时,页面只需重新加载。可能出现什么问题?两台主机使用相同的PHP版本。这是代码
$this->page_hooks[\'link1\'] = add_submenu_page(__FILE__, __(\'link1\', \'domain\'), __(\'link1\', \'domain\'), $acl_table[\'manage_link1\'], \'wp-plugin-link1\', array($this, \'on_manage_link1\'));
$this->page_hooks[\'link2\'] = add_submenu_page(__FILE__, __(\'link2\', \'domain\'), __(\'link2\', \'domain\'), $acl_table[\'manage_link2\'], \'wp-plugin-link2\', array($this, \'on_manage_link2\'));
$this->page_hooks[\'link3\'] = add_submenu_page(__FILE__, __(\'link3\', \'domain\'), __(\'link3\', \'domain\'), $acl_table[\'manage_link3\'], \'wp-plugin-link3\', array($this, \'on_manage_link3\'));
$this->page_hooks[\'link4\'] = add_submenu_page(__FILE__, __(\'link4\', \'domain\'), __(\'link4\', \'domain\'), \'manage_options\', \'wp-plugin-link4\', array($this, \'on_link4\'));
$this->page_hooks[\'link5\'] = add_submenu_page(__FILE__, __(\'link5\', \'domain\'), __(\'link5\', \'domain\'), \'manage_options\', \'wp-plugin-link5\', array($this, \'on_link5\'));
SO网友:Ryan Bayne
在我看来,调用页面文件本身的钩子函数对于add\\u submenu\\u page()的所有五种用法都是一样的。没有代码很难说。
<?php add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function ); ?>
$function变量对于所有五种用途都应该是不同的,这意味着您需要另外四种函数或类方法。您必须已经有了一个,只需复制它并将包含指向其他页面文件,或者如果不包含文件,请更改函数内容。
Wordpress Codex: add_submenu_page()
Update您是否尝试过不使用$this->page\\u hooks[\'link5\',进一步简化事情?我不记得这样使用add\\u submenu\\u page()。我确实在一个循环中使用它,因为我的菜单结构/数据在插件的数组中。。。
add_submenu_page($n, $c2p_mpt_arr[$k][\'title\'], $c2p_mpt_arr[$k][\'menu\'], $required_capability, $c2p_mpt_arr[$k][\'slug\'], array($this,\'page_\' . $k) );