问题描述
我正在 wordpress 管理中为插件创建菜单和子菜单。 主菜单的菜单项工作正常并转到正确的 PHP 文件(页面)。 但是子菜单显示了菜单的文本,但是当点击它时它会重定向到 404 页面,在我的情况下它会转到主页。我在代码上花了几个小时,看起来我正在监督某些事情。代码如下:
class BbtbPlugin{
public function __construct(){
add_action( 'init',array( $this,'bbtb_admin_menu' ));
}
public function bbtb_admin_menu() {
add_menu_page(
'Bricks by the Bay conventions','BBTB conventions','manage_options','bbtb_conventions','all_bbtb_conventions','dashicons-media-spreadsheet',11
);
add_submenu_page(
'bbtb_conventions','Settings','bbtb_settings',function () { // anonymous callback function
include "includes/setting_page.PHP";
}
);
function all_bbtb_conventions() {
include "includes/add_convention.PHP";
}
}
}
因此,我通过在 add_menu_page 中将“all_bbtb_convention”替换为“bbtb_settings”来检查子菜单的功能是否有效。然后函数就起作用了。
所以 add_submenu_page 设置中一定有我遗漏的东西
解决方法
可能是因为您在回调函数的名称中使用了与 slug 相同的名称,请尝试更改它。
您还可以执行以下操作:
add_submenu_page(
'bbtb_conventions','Settings','manage_options','bbtb_settings','bbtb_settings_callback'
);
function bbtb_settings_callback() {
include "includes/setting_page.php";
}
您甚至可以使用匿名函数省略回调函数。
add_submenu_page(
'bbtb_conventions',function () { // anonymous callback function
include "includes/setting_page.php";
}
);
也不需要添加条件来验证manage_options的容量,因为对于某些东西,容量在add_menu_page()
的参数3和add_submenu_page()
的参数4中设置
希望对你有帮助,问候!
,发现我需要更改 add_action( 'init',array( $this,'bbtb_admin_menu' ));
用 init
替换 admin_menu
。
现在效果很好