传递给Add_SubMenu_Page()的第七个参数

时间:2019-11-08 作者:yannibmbr

我正在用我的主题测试WordPress 5.3(5.3-RC4-46673)。我有WP_DEBUG 已启用。我现在注意到仪表板中出现以下错误:

注意:add\\u submenu\\u页面调用不正确。传递给add\\u submenu\\u page()的第七个参数应该是表示菜单位置的整数。有关详细信息,请参阅WordPress中的调试。(此消息是在版本5.3.0中添加的。)in/app/wp包括/功能。php在线4903

此处有此错误的相关票据:Trac Ticket #48249

Troubleshooting我使用的主题是子主题。

禁用了所有插件,问题仍然存在

4 个回复
SO网友:yannibmbr

我找到了罪魁祸首函数add_theme_page(). 那里

有一个附加参数,根据the codex for add_theme_page() 需要移除的。移除这些似乎有帮助。

function fivehundred_register_admin_menu() {
  add_theme_page(
    \'500 Settings\',
    \'500 Settings\',
    \'manage_options\',
    \'theme-settings\',
    \'fivehundred_admin_menu\',
    plugins_url( \'/ignitiondeck/images/ignitiondeck-menu.png\' )
  );
}

add_action(
  \'admin_menu\',
  \'fivehundred_register_admin_menu\'
);
固定代码

function fivehundred_register_admin_menu() {
  add_theme_page(
    \'500 Settings\',
    \'500 Settings\',
    \'manage_options\',
    \'theme-settings\',
    \'fivehundred_admin_menu\'
  );
}

add_action(
  \'admin_menu\',
  \'fivehundred_register_admin_menu\'
);

SO网友:jogesh_pi

您可以通过将第七个参数添加为null.

function fivehundred_register_admin_menu() {
  add_theme_page(
    \'500 Settings\',
    \'500 Settings\',
    \'manage_options\',
    \'theme-settings\',
    \'fivehundred_admin_menu\',
    plugins_url( \'/ignitiondeck/images/ignitiondeck-menu.png\' ),
    null
  );
}

add_action(
  \'admin_menu\',
  \'fivehundred_register_admin_menu\'
);

SO网友:Christopher Sample

同样的错误也适用于add\\u pages\\u page()函数中的参数问题

对于其他未使用add\\u theme\\u page()或add\\u submenu\\u page()函数的用户,请查找您对add\\u pages\\u page()的使用情况并更正参数。

在我的例子中,我需要删除第一个为null的参数,并给页面一个标题。

SO网友:alo Malbarez

此通知可由函数的多个变体/包装触发add_submenu_page.

自WP v5.8起

添加插件页面添加用户页面添加评论页面添加管理页面添加选项页面u theme\\u page为了缩小范围,寻找合适的函数,我们可以修改核心文件./wp-admin/includes/plugin.php (约1420行)更详细。

_doing_it_wrong(
  __FUNCTION__,
  sprintf(
    /* translators: %s: add_submenu_page() */
    __( \'The seventh parameter passed to %s should be an integer representing menu position. %s\' ),
    \'<code>add_submenu_page()</code>\',
    print_r( $new_sub_menu, true )
  ),
  \'5.3.0\'
);

在我的例子中,冒犯的功能是add_dashboard_page

add_dashboard_page(
  \'Link Builder\',
  \'Link Builder\',
  \'manage_options\',
  \'mytheme-woocommerce-helper\',
  array( $this, \'mytheme_woocommerce_helper_create_admin_page\' ),
  \'dashicons-admin-generic\',
  2
);
编辑核心文件前注意事项:

PHP Notice:  add_submenu_page was called <strong>incorrectly</strong>. 
The seventh parameter passed to <code>add_submenu_page()</code> 
should be an integer representing menu position.  
Please see <a href="https://wordpress.org/support/article/debugging-in-wordpress/">Debugging in WordPress</a> for more information. 
(This message was added in version 5.3.0.) in wp-includes/functions.php on line 5535
编辑核心文件后注意事项:

PHP Notice:  add_submenu_page was called <strong>incorrectly</strong>. 
The seventh parameter passed to <code>add_submenu_page()</code> 
should be an integer representing menu position.  
Array
(
   [0] => Link Builder
   [1] => manage_options
   [2] => mytheme-woocommerce-helper
   [3] => Link Builder
)

warning/disclaimer/notes

仅在开发实例中执行此编辑。WP core更新或升级将还原更改。wordfence之类的插件将发出警告,并可能恢复更改。

相关推荐

为什么dbDelta()不能捕获MysqlErrors?

据我所见,dbDelta() 用于抑制在其操作过程中发生的数据库错误。一般来说,情况似乎是这样,但New Relic仍在报告函数中的MysqlErrors。准确的错误消息格式如下:MysqlError: Table \'xxx.wp_yyy_posts\' doesn\'t exist 发件人dbDelta() 在里面/wp-admin/includes/upgrade.php, 我们有:// Fetch the table column structure from the database&