WordPress 插件开发 关于 get_current_screen()->id 不一致的问题

本文最后更新于 2024年5月2日,已超过 6 月没有更新,如果文章内容失效,请反馈给我们,谢谢!

今天遇到一个神奇的BUG,

wp_add_dashboard_widget() 和 add_meta_box() 生成的元框相互对不上。

经排查发现 do_meta_boxes() 有这么一段

if ( empty( $screen ) ) {
	$screen = get_current_screen();
} elseif ( is_string( $screen ) ) {
	$screen = convert_to_screen( $screen );
}

会发现,经过了 convert_to_screen() 函数后输出的id不是一样的

echo get_current_screen()->id;
$screen = convert_to_screen( get_current_screen()->id );
echo '<br>'. $screen->id;

问题就在 add_action('admin_menu','') 里

主菜单的侧边栏名称用了中文,换回英文就好了

<?php
add_action('admin_menu', function () {
  $krjojo_tool_menu = add_menu_page(
    '手里有只毛毛虫工具箱',                            // 页面内标题
    'KRJtool',                                      // 侧边栏名称    <---- 就是这一行
    'manage_options',                               // 菜单所需的功能
    'krjojo_tool_setting_slug',                     // id (slug)
    'krjojo_tool_setting_html',                     // 页面的内容
    plugin_dir_url(__FILE__) . 'images/icon.svg',   // 图标
    20                                              // 菜单顺序中的位置
  );
});
© 版权声明
分享是一种美德,转载请保留原链接
THE END

文章不错?点个赞呗
点赞 0 分享

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Telegram
QQ
Wechat
Email
Email
Telegram
Wechat
QQ
滚动至顶部