【问题标题】:Wordpress plugin custom options page not accessible无法访问 Wordpress 插件自定义选项页面
【发布时间】:2020-03-18 21:39:40
【问题描述】:

我正在创建我的第一个 WP 插件类,并且似乎遇到了选项页面生成的问题。 我有一个 admin_init 方法来创建一个新页面(现在在 top_level 菜单中),它工作正常,但单击菜单中的链接总是将我发送到“您不允许访问此页面”页面。

奇怪的是,在调试问题时,我看到在激活插件时对我的页面的引用被添加到 $_registered_pa​​ges 数组中。但是在点击链接后调试时,$_registered_pa​​ges 数组不包含对我的插件的引用。另外,在我返回网站的问题后,菜单选项消失了。

这是我的 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_pa​​ges 条目。

感谢所有帮助/cmets。 保罗

【问题讨论】:

  • 必须在每一页调用add_menu_page。你为什么要测试!$initialized
  • 试过了,但没有任何区别。菜单选项最初出现,但单击它会显示“无法访问”页面,并且 $_registered_pa​​ges 条目再次丢失...奇怪...返回调试器。
  • 我找到了主要问题,页面必须添加到动作admin_menu。它写在笔记中:developer.wordpress.org/reference/functions/add_menu_page
  • 是的,在你第一次发表评论后我已经改变了......我会更新我的帖子
  • @Kaperto Thx 向正确的方向轻推 :)

标签: wordpress


【解决方案1】:

好的,找到问题了……最烦人的!

我的类需要与在每个 admin_init 和 admin_menu 上注册的钩子一起初始化。

一大堆毫无意义的处理!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    相关资源
    最近更新 更多