menu_settings = (new MenuEditorOptions())->get(); $this->options = (array) AdminSettings::get_instance()->get(); add_filter('admin_body_class', array($this, 'admin_menu_body_class')); if (empty($this->options['admin_ui'])) { return; } add_filter('parent_file', array($this, 'render_adminify_admin_menu'), 9999); add_action('adminmenu', array($this, 'render_output_adminify_admin_menu')); } // Body Class public function admin_menu_body_class($classes) { $this->options = (array) AdminSettings::get_instance()->get('menu_layout_settings'); $menu_layout = !empty($this->options['layout_type']) ? sanitize_text_field($this->options['layout_type']) : 'vertical'; $menu_mode = !empty($this->options['menu_mode']) ? sanitize_text_field($this->options['menu_mode']) : 'classic'; $bodyclass = ''; if ($menu_layout == 'vertical' && $menu_mode === 'icon_menu') { $classes .= ' folded '; } $classes .= ' adminify_admin_menu '; return $classes . $bodyclass; } /** * Render Admin Menu * * @package WP Adminify * @return void */ public function render_adminify_admin_menu($parent_file) { global $menu, $pagenow, $wp_adminify_menu; $current_user = wp_get_current_user(); $this->original_menu = $menu; $this->options = (array) AdminSettings::get_instance()->get(); // Disable Default Menu $menu = array(); ob_start(); ?> original_submenu = $submenu; $menu_options = $this->menu_settings; foreach ($the_menu as $menu_item) { $menu_name = $menu_item[0]; $menu_link = $menu_item[2]; $divider = false; $disabled_for = array(); if (is_array($menu_options)) { if (isset($menu_options[$menu_item[2]])) { $optiongroup = $menu_options[$menu_item[2]]; if (!empty($optiongroup['hidden_for'])) { $disabled_for = $this->jltwp_adminify_menu_roles($optiongroup['hidden_for']); if (Utils::restricted_for($disabled_for)) { continue; } } } } $custom_menu = isset($menu_item[5]) ? $menu_item[5] : ''; if (strpos($custom_menu, 'adminify-custom-menu-') !== false) { if (isset($menu_options[$menu_item[5]]['hidden_for'])) { $hidden_for = $menu_options[$menu_item[5]]['hidden_for']; if (!empty($hidden_for)) { $disabled_for = $this->jltwp_adminify_menu_roles($hidden_for); if (Utils::restricted_for($disabled_for)) { continue; } } } } if (strpos($menu_link, 'separator') !== false) { $divider = true; // $this->render_divider($menu_item); continue; } if (!$menu_name) { continue; } if (isset($submenu[$menu_link])) { $sub_menu_items = $submenu[$menu_link]; } else { $sub_menu_items = false; } $link = $this->get_menu_link($menu_item); if ('edit.php?post_type=elementor_library' === $link) { $link .= '&tabs_group=library'; } $classes = $this->get_menu_clases($menu_item, $submenu); ?>
  • get_icon($menu_item); ?> render_sub_level_menu_items($sub_menu_items, $menu_item, $menu_options); } ?>
  • render_divider($menu_item); } } } /** * Gets correct classes for top level menu item * * @since 1.4 */ public function get_menu_clases($menu_item, $sub_menu) { $menu_link = $menu_item[2]; $classes = $menu_item[4]; if (isset($sub_menu[$menu_link])) { $classes = $classes . ' wp-has-submenu wp-adminify-parent '; $classes = $classes . ' ' . $this->check_if_active($menu_item, $sub_menu[$menu_link]); } else { $classes = $classes . ' ' . $this->check_if_single_active($menu_item); } return $classes; } /** * Checks if we are on an active link or sub link * * @since 1.4 */ public function check_if_active($menu_item, $sub_menu) { if (!is_array($sub_menu)) { return ''; } global $pagenow; if (isset($_SERVER['QUERY_STRING'])) { $currentquery = sanitize_text_field(wp_unslash($_SERVER['QUERY_STRING'])); } if ($currentquery) { $currentquery = '?' . $currentquery; } $wholestring = $pagenow . $currentquery; $visibility = 'hidden'; $open = 'wp-not-current-submenu'; $files = $this->files; foreach ($sub_menu as $sub) { if ($sub[2] === 'edit-tags.php?taxonomy=elementor_library_category&post_type=elementor_library') { $link = 'edit-tags.php?taxonomy=elementor_library_category&post_type=elementor_library'; } elseif ($sub[2] === 'edit.php?post_type=elementor_library') { $link = 'edit.php?post_type=elementor_library'; } elseif (($sub[2] === 'e-landing-page') || ($sub[2] === 'popup_templates')) { $link = 'edit.php?post_type=elementor_library&page=' . esc_attr($sub[2]); } elseif ($sub[2] === 'updraftplus') { $link = 'options-general.php?page=' . esc_attr($sub[2]); } elseif (strpos($sub[2], '.php') !== false) { $link = $sub[2]; $querypieces = explode('?', $link); $temp = $querypieces[0]; if (!in_array($temp, $files)) { $link = 'admin.php?page=' . esc_attr($sub[2]); } } else { $link = 'admin.php?page=' . esc_attr($sub[2]); } $linkclass = ''; if (($wholestring == $link) || ((strpos($wholestring, 'edit.php?post_type=elementor_library') !== false) && (strpos($link, 'edit.php?post_type=elementor_library') !== false))) { $linkclass = 'wp-has-current-submenu wp-menu-open'; $open = 'wp-adminify-active wp-adminify-open wp-menu-open wp-has-current-submenu'; $visibility = ''; break; } } return $open; } /** * Render Divider * * @package WP Adminify * @return void */ public function render_divider($divider) { if (isset($divider['name'])) { ?>
  • files; if ($sub_menu_item[2] === 'edit-tags.php?taxonomy=elementor_library_category&post_type=elementor_library') { $link = 'edit-tags.php?taxonomy=elementor_library_category&post_type=elementor_library'; } elseif ($sub_menu_item[2] === 'popup_templates') { $link = 'edit.php?post_type=elementor_library&page=' . esc_attr($sub_menu_item[2]); } elseif ($sub_menu_item[2] === 'updraftplus') { $link = 'options-general.php?page=' . esc_attr($sub_menu_item[2]); } elseif (strpos($sub_menu_item[2], '.php') !== false) { $link = $sub_menu_item[2]; $querypieces = explode('?', $link); $temp = $querypieces[0]; if (!in_array($temp, $files)) { $link = 'admin.php?page=' . esc_attr($sub_menu_item[2]); } } else { $link = 'admin.php?page=' . esc_attr($sub_menu_item[2]); } $linkclass = ''; if ($wholestring == $link) { $linkclass = 'wp-adminify-active current'; } return $linkclass; } /** * Scans admin directory for menu links * * @since 1.4 */ public function get_admin_files() { $absolutepath = ABSPATH . '/wp-admin' . '/'; $files = array_diff(scandir($absolutepath), array('.', '..')); if (is_multisite()) { $pathtonetwork = ABSPATH . '/wp-admin' . '/network/'; $networkfiles = array_diff(scandir($pathtonetwork), array('.', '..')); $files = array_merge($files, $networkfiles); } return $files; } /** * Gets correct link for menu item * * @since 1.4 */ public function get_menu_link($menu_item) { $menu_link = $menu_item[2]; $files = $this->get_admin_files(); $this->files = $files; if ($menu_link == 'woocommerce') { $menu_link = 'wc-admin'; } if (($menu_link === 'e-landing-page') || ($menu_link === 'popup_templates')) { $link = 'edit.php?post_type=elementor_library&page=' . esc_attr($menu_link); } elseif ($menu_link === 'updraftplus') { $link = 'options-general.php?page=' . esc_attr($menu_link); } elseif (strpos($menu_link, 'admin.php') !== false) { $link = $menu_link; } elseif (strpos($menu_link, '.php') !== false) { $link = $menu_link; if (strpos($menu_link, '/') !== false) { $pieces = explode('/', $menu_link); if (strpos($pieces[0], '.php') !== true || !file_exists(get_admin_url() . esc_attr($menu_link))) { $link = 'admin.php?page=' . esc_attr($menu_link); } } $querypieces = explode('?', $link); $temp = $querypieces[0]; if (!in_array($temp, $files)) { $link = 'admin.php?page=' . esc_attr($menu_link); } } else { $link = 'admin.php?page=' . esc_attr($menu_link); } if (strpos($menu_link, '/wp-content/') !== false) { $link = 'admin.php?page=' . esc_attr($menu_link); } // CHECK IF INTERNAL URL if (strpos($menu_link, get_site_url()) !== false) { $link = $menu_link; } // CHECK IF EXTERNAL LINK if (strpos($menu_link, 'https://') !== false || strpos($menu_link, 'http://') !== false) { $link = $menu_link; } return $link; } /** * Gets top level menu item icon * * @since 1.4 */ public function get_icon($menu_item) { // LIST OF AVAILABLE MENU ICONS $icons = array( 'dashicons-dashboard' => 'dashicons dashicons-dashboard', 'dashicons-admin-post' => 'dashicons dashicons-admin-post', 'dashicons-database' => 'dashicons dashicons-database', 'dashicons-admin-media' => 'dashicons dashicons-admin-media', 'dashicons-admin-page' => 'dashicons dashicons-admin-page', 'dashicons-admin-comments' => 'dashicons dashicons-admin-comments', 'dashicons-admin-appearance' => 'dashicons dashicons-admin-appearance', 'dashicons-admin-plugins' => 'dashicons dashicons-admin-plugins', 'dashicons-admin-users' => 'dashicons dashicons-admin-users', 'dashicons-admin-tools' => 'dashicons dashicons-admin-tools', 'dashicons-chart-bar' => 'dashicons dashicons-chart-bar', 'dashicons-admin-settings' => 'dashicons dashicons-admin-settings', ); // SET MENU ICON $theicon = ''; // $wpicon = $menu_item; $wpicon = (isset($menu_item)) ? $menu_item[6] : ''; if (isset($menu_item['icon']) && !empty($menu_item['icon'])) { if (preg_match('/http(s?)\:\/\//i', $menu_item['icon'])) { $icon = explode(',', $menu_item['icon']); ?> style="background-image: url();" > original_menu; $submenu = $this->original_submenu; } }