返回上一级

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

今天遇到一个神奇的BUG,

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

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

1if ( empty( $screen ) ) {
2	$screen = get_current_screen();
3} elseif ( is_string( $screen ) ) {
4	$screen = convert_to_screen( $screen );
5}

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

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

问题就在 add_action(‘admin_menu’,’’) 里

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

 1<?php
 2add_action('admin_menu', function () {
 3  $krjojo_tool_menu = add_menu_page(
 4    '手里有只毛毛虫工具箱',                            // 页面内标题
 5    'KRJtool',                                      // 侧边栏名称    <---- 就是这一行
 6    'manage_options',                               // 菜单所需的功能
 7    'krjojo_tool_setting_slug',                     // id (slug
 8    'krjojo_tool_setting_html',                     // 页面的内容
 9    plugin_dir_url(__FILE__) . 'images/icon.svg',   // 图标
10    20                                              // 菜单顺序中的位置
11  );
12});