6

我正在尝试创建一个管理菜单分隔符,允许您将它们与代码一起放入。这是功能:

function add_admin_menu_separator($position) {
  global $menu;
  $index = 0;
  foreach($menu as $offset => $section) {
    if (substr($section[2],0,9)=='separator')
    $index++;
    if ($offset>=$position) {
      $menu[$position] = array('','read',"separator{$index}",'','wp-menu-separator');
      break;
    }
  }
  ksort( $menu );
}

添加操作位如下

add_action('admin_init','admin_menu_separator');
    
function admin_menu_separator() {
  add_admin_menu_separator(220);
}

它工作正常,但在重新排列菜单时会在 WordPress 中产生以下错误:

> Warning: Invalid argument supplied for foreach() in /home/user/public_html/wp-creation.com/wp-content/themes/liquid_theme_0.4_licensed/functions.php on line 174
    
> Warning: ksort() expects parameter 1 to be array, null given in /home/user/public_html/wp-creation.com/wp-content/themes/liquid_theme_0.4_licensed/functions.php on line 182
4

2 回答 2

6

你应该挂钩admin_menu

add_action('admin_menu','admin_menu_separator');

并使用低于220. offset我在我的系统中得到的最大的是99.

检查这个非常好的类来处理管理菜单。
它出现在这个 WPSE 问题中:向管理菜单添加分隔符?

于 2013-10-16T23:58:15.637 回答
1

您可以简单地在functions.php中添加它

add_action('admin_menu', function () {   
  global $menu;
  $menu[49] = ['', 'read', '', '', 'wp-menu-separator'];
});

其中 49 是分隔符位置,您必须记住,分隔符位置可以替换您的菜单元素,如果它具有相同的位置。

于 2020-08-07T06:45:35.360 回答