如果你想更改WordPress后台菜单的排列顺序,这里有一个简单的方法,通过custom_menu_order和menu_order即可实现。

更改菜单顺序的代码

在主题的functions.php中添加如下代码

function my_custom_menu_order($menu_ord) {
	echo '<pre>';print_r($menu_ord);echo '</pre>';
       if (!$menu_ord) return true;
       return array('index.php', 'edit.php', 'separator1','edit-comments.php','plugins.php');
}

add_filter('custom_menu_order', 'my_custom_menu_order');
add_filter('menu_order', 'custom_menu_order');

函数my_custom_menu_order被添加到两个filters中。当WordPress显示菜单时,会检查filter custom_menu_order的返回值,这个filter总是返回false,从而禁止WordPress使用自定义的菜单顺序。我们的函数返回true,因此开启了自定义菜单顺序的功能。filter menu_order将会利用我们return的数组重新排列菜单,例如上面代码执行的结果如下。

使用自定义的菜单顺序

Posts被移动到Dashboard下面,separator1代表分隔符,也就是Posts下面那条颜色稍微深一些的横线。Comments被移动到Posts下方。

如果你想进一步了解菜单顺序的问题,可以看一看这篇文章

Changing the Order of Admin Menu Sections

附件

这两个filters位于wp-admin/includes/menu.php中

if ( apply_filters('custom_menu_order', false) ) {
	$menu_order = array();
	foreach ( $menu as $menu_item ) {
		$menu_order[] = $menu_item[2];
	}
	unset($menu_item);
	$default_menu_order = $menu_order;
	$menu_order = apply_filters('menu_order', $menu_order);
	$menu_order = array_flip($menu_order);
	$default_menu_order = array_flip($default_menu_order);

	function sort_menu($a, $b) {
		global $menu_order, $default_menu_order;
		$a = $a[2];
		$b = $b[2];
		if ( isset($menu_order[$a]) && !isset($menu_order[$b]) ) {
			return -1;
		} elseif ( !isset($menu_order[$a]) && isset($menu_order[$b]) ) {
			return 1;
		} elseif ( isset($menu_order[$a]) && isset($menu_order[$b]) ) {
			if ( $menu_order[$a] == $menu_order[$b] )
				return 0;
			return ($menu_order[$a] < $menu_order[$b]) ? -1 : 1;
		} else {
			return ($default_menu_order[$a] <= $default_menu_order[$b]) ? -1 : 1;
		}
	}

	usort($menu, 'sort_menu');
	unset($menu_order, $default_menu_order);
}

 

 

3条留言

  1. 标记一下,虽然这东西无大用处,估计只有插件开发者才感兴趣吧。

    1. 给客户做整站的话会有点用,很多客户没用过wordpress,看到一大堆菜单就头疼,所以隐藏一些菜单,把顺序调整一下会让他们用的更轻松一些

      1. 哦,原来如此。

评论功能已关闭