· 1 分钟

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

今天遇到一个神奇的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                                              // 菜单顺序中的位置
  );
});
返回文章列表