【发布时间】:2020-03-18 21:39:40
【问题描述】:
我正在创建我的第一个 WP 插件类,并且似乎遇到了选项页面生成的问题。 我有一个 admin_init 方法来创建一个新页面(现在在 top_level 菜单中),它工作正常,但单击菜单中的链接总是将我发送到“您不允许访问此页面”页面。
奇怪的是,在调试问题时,我看到在激活插件时对我的页面的引用被添加到 $_registered_pages 数组中。但是在点击链接后调试时,$_registered_pages 数组不包含对我的插件的引用。另外,在我返回网站的问题后,菜单选项消失了。
这是我的 admin_init 方法,挂在主插件页面中:
public static function admin_menu() {
$hook = add_menu_page(
self::$title,
self::$menuTitle,
'manage_options',
self::$slug,
array('DP_Quora_Profile_Scraper', 'load_options_page')
);
add_action('load-' . $hook, array('DP_Quora_Profile_Scraper', 'save_options_page'));
}
我正在调试并看到缺少页面引用的函数是 wp-admin/includes/plugin.php 中的 user_can_access_admin_page()
我没有使用设置 API,因为我真的不喜欢它,而且我的插件无论如何都需要它自己的数据库表,所以我将我的所有登录信息封装在我的类中。
关于我的菜单页面为何/如何消失的任何想法。
Wordpress 版本是 5.3。新开发站点,没有其他插件,默认主题。
[编辑] 显示调试会话的附加屏幕截图:您可以看到确实添加了 $_registered_pages 条目。
感谢所有帮助/cmets。 保罗
【问题讨论】:
-
必须在每一页调用
add_menu_page。你为什么要测试!$initialized? -
试过了,但没有任何区别。菜单选项最初出现,但单击它会显示“无法访问”页面,并且 $_registered_pages 条目再次丢失...奇怪...返回调试器。
-
我找到了主要问题,页面必须添加到动作
admin_menu。它写在笔记中:developer.wordpress.org/reference/functions/add_menu_page -
是的,在你第一次发表评论后我已经改变了......我会更新我的帖子
-
@Kaperto Thx 向正确的方向轻推 :)
标签: wordpress