$menu_info ) { if ( false !== strpos( $menu_info[4], 'wp-menu-separator' ) ) { $menu_item_id = $menu_info[2]; } else { $menu_item_id = $menu_info[5]; } $current_menu_order[] = array( $menu_item_id, $menu_info[2] ); } // Get custom menu order $custom_menu_order = $options['custom_menu_order']; // comma separated $custom_menu_order = explode( ",", $custom_menu_order ); // array of menu ID, e.g. menu-dashboard // Return menu order for rendering $rendered_menu_order = array(); // Render menu based on items saved in custom menu order foreach ( $custom_menu_order as $custom_menu_item_id ) { foreach ( $current_menu_order as $current_menu_item_id => $current_menu_item ) { if ( $custom_menu_item_id == $current_menu_item[0] ) { $rendered_menu_order[] = $current_menu_item[1]; } } } // Add items from current menu not already part of custom menu order, e.g. new plugin activated and adds new menu item foreach ( $current_menu_order as $current_menu_item_id => $current_menu_item ) { if ( ! in_array( $current_menu_item[0], $custom_menu_order ) ) { $rendered_menu_order[] = $current_menu_item[1]; } } return $rendered_menu_order; } /** * Apply custom menu item titles * * @since 1.0.0 */ public function apply_custom_menu_item_titles() { global $menu; $options = get_option( AMCUST_SLUG_U, array() ); // Get custom menu item titles $custom_menu_titles = $options['custom_menu_titles']; $custom_menu_titles = explode( ',', $custom_menu_titles ); foreach ( $menu as $menu_key => $menu_info ) { if ( false !== strpos( $menu_info[4], 'wp-menu-separator' ) ) { $menu_item_id = $menu_info[2]; } else { $menu_item_id = $menu_info[5]; } // Get defaul/custom menu item title foreach ( $custom_menu_titles as $custom_menu_title ) { // At this point, $custom_menu_title value looks like toplevel_page_snippets__Code Snippets $custom_menu_title = explode( '__', $custom_menu_title ); if ( $custom_menu_title[0] == $menu_item_id ) { $menu_item_title = $custom_menu_title[1]; // e.g. Code Snippets break; // stop foreach loop so $menu_item_title is not overwritten in the next iteration } else { $menu_item_title = $menu_info[0]; } } $menu[$menu_key][0] = $menu_item_title; } } /** * Hide menu items by adding 'hidden' class (part of WP Core's common.css) * * @since 1.0.0 */ public function hide_menu_items() { global $menu; $options = get_option( AMCUST_SLUG_U, array() ); // Get hidden menu items $hidden_menu = $options['custom_menu_hidden']; $hidden_menu = explode( ',', $hidden_menu ); foreach ( $menu as $menu_key => $menu_info ) { if ( false !== strpos( $menu_info[4], 'wp-menu-separator' ) ) { $menu_item_id = $menu_info[2]; } else { $menu_item_id = $menu_info[5]; } if ( in_array( $menu_item_id, $hidden_menu ) ) { $menu[$menu_key][4] = $menu_info[4] . ' hidden amcust_hidden_menu'; } } } /** * Add toggle to show hidden menu items * * @since 1.0.0 */ public function add_hidden_menu_toggle() { $options = get_option( AMCUST_SLUG_U, array() ); // Get hidden menu items $hidden_menu = $options['custom_menu_hidden']; if ( ! empty( $hidden_menu ) ) { add_menu_page( 'Show All', 'Show All', 'manage_options', 'amcust_show_hidden_menu', function () { return false; }, "dashicons-arrow-down-alt2", 300 // position ); add_menu_page( 'Show Less', 'Show Less', 'manage_options', 'amcust_hide_hidden_menu', function () { return false; }, "dashicons-arrow-up-alt2", 301 // position ); } } }