Make WordPress Core

Ticket #21408: add_admin_menu_separator.php

File add_admin_menu_separator.php, 2.9 KB (added by soficgr, 14 years ago)
Line 
1<?php
2/**
3 * How to use - add at theme function.php
4
5 add_action('admin_menu','my_admin_menu_separator');
6 function my_admin_menu_separator() {
7 add_admin_menu_separator(10);
8 add_admin_menu_separator(34);
9 add_admin_menu_separator(20);
10 add_admin_menu_separator(3);
11 add_admin_menu_separator(2);
12 add_admin_menu_separator(20);
13 add_admin_menu_separator(30);
14 add_admin_menu_separator(40);
15 remove_admin_menu_separator(4);
16 //add_admin_menu_separator(4);
17 //add_admin_menu_separator(8);
18 remove_admin_menu_separator(8);
19 add_admin_menu_separator(11);
20 add_admin_menu_separator(61);
21 add_admin_menu_separator(12);
22 add_admin_menu_separator(130);
23 add_admin_menu_separator(240);
24 add_admin_menu_separator(300);
25 add_admin_menu_separator(220);
26 //remove_admin_menu_separator(4);
27 //var_dump($GLOBALS['menu']);
28 //exit;
29 }
30 */
31
32
33/**
34 * Add Top Level menu separator
35 * @link http://codex.wordpress.org/Administration_Menus
36 * @use global $menu
37 * @param int $position separator position, only empty menu position are acceptable
38 * @param string $capability The capability required for this menu to be displayed to the user (default 'read').
39 * the last separator capability is always read
40 */
41function add_admin_menu_separator( $position, $capability = 'read' ) {
42 global $menu;
43 $_separator_count = 0;
44
45 if( isset( $menu[$position] ) )
46 return;
47
48 //add new separator
49 $menu[$position] = array('',$capability,"separator_new",'','wp-menu-separator' );
50 ksort( $menu );
51
52 //normalize separator count
53 foreach( $menu as $_offset => $_section){
54 if ( substr( $_section[2],0,9 ) == 'separator' ) {
55 $_separator_count++;
56 $menu[$_offset][2]= "separator{$_separator_count}";
57 }
58 }
59
60 //last separator
61 $_last_menu_key = array_pop( array_keys( $menu ) );
62 if( substr( $menu[$_last_menu_key][2],0,9 ) == 'separator' ){
63 $menu[$_last_menu_key][2] ='separator-last';
64 }
65
66}
67
68/**
69 * Remove Top Level Menu Separator
70 * This function does not remove the last separator
71 * @link http://codex.wordpress.org/Administration_Menus
72 * @use global $menu
73 * @param int $position separator position
74 * @return bool true | false
75 */
76function remove_admin_menu_separator( $position ) {
77 global $menu;
78 $_separator_count = 0;
79
80 if( isset( $menu[$position] ) && $menu[$position][2] !== 'separator-last' && substr( $menu[$position][2],0,9 ) == 'separator' ){
81 unset( $menu[$position] );
82 ksort( $menu );
83
84 //normalize separator count
85 foreach( $menu as $_offset => $_section){
86 if ( substr( $_section[2],0,9 ) == 'separator' ) {
87 $_separator_count++;
88 $menu[$_offset][2]= "separator{$_separator_count}";
89 }
90 }
91
92 //last separator
93 $_last_menu_key = array_pop( array_keys( $menu ) );
94 if( substr( $menu[$_last_menu_key][2],0,9 ) == 'separator' ){
95 $menu[$_last_menu_key][2] ='separator-last';
96 }
97 return true;
98 }
99
100 return false;
101
102}