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 | */ |
---|
41 | function 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 | */ |
---|
76 | function 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 | } |
---|