/**
  * add custom submenu link under __CLASS__ menu
  * @param $menu
  */
 public static function valid_custom_submenu($menu)
 {
     if (count($menu) < 3) {
         return;
     }
     $menu = apply_filters('hw_valid_custom_submenu', $menu);
     //special wp core file
     $wp_core_files = array('options-general.php', 'admin.php', 'tools.php', 'import.php', 'export.php', 'users.php', 'user-new.php', 'profile.php', 'plugins.php', 'plugin-install.php', 'plugin-editor.php', 'theme-editor.php', 'customize.php', 'nav-menus.php', 'widgets.php', 'themes.php', 'edit-comments.php', 'media-new.php', 'upload.php', 'edit-tags.php', 'edit.php', 'post-new.php', 'update-core.php');
     if ($menu[0] == 'edit_theme_options') {
         switch ($menu[1]) {
             case 'custom-header':
                 $menu[2] = admin_url('customize.php?return=&autofocus[control]=header_image');
                 return $menu;
             case 'custom-background':
                 $menu[2] = admin_url('customize.php?return=&autofocus[control]=background_image');
                 return $menu;
         }
     }
     //check wp core file
     if (in_array(trim($menu[2]), $wp_core_files)) {
         $menu[2] = admin_url($menu[2]);
         return $menu;
     }
     foreach ($wp_core_files as $file) {
         if (preg_match("%^{$file}%", $menu[2])) {
             $menu[2] = admin_url($menu[2]);
             return $menu;
         }
     }
     $url = explode('?', $menu[2]);
     if (!HW_Validation::hw_valid_url($menu[2]) && preg_match('#\\.php$#', trim(reset($url)))) {
         $menu[2] = admin_url('admin.php?page=' . $menu[2]);
     } elseif (!HW_Validation::hw_valid_url($menu[2])) {
         $menu[2] = admin_url('options-general.php?page=' . $menu[2]);
     }
     return $menu;
 }
示例#2
0
 /**
  * fix submenus for module box icon
  * @param $parent_box_id
  */
 protected function migrate_submenus_module_box($parent_box_id = '')
 {
     static $parent;
     if (empty($parent)) {
         $parent =& $this->get_main_menu_box();
     }
     //main module menu box
     if ($parent_box_id == '') {
         $parent_box_id = $parent['id'];
     }
     //add submenu box for module icon
     $list_menus = $this->get_other_module_submenus();
     #_print($list_menus);
     if (!empty($list_menus)) {
         //fix parent menu
         if (isset($list_menus['parent'][6])) {
             //find plugin icon
             if (empty($parent['icon_url']) && HW_Validation::hw_valid_url($list_menus['parent'][6])) {
                 $parent['icon_url'] = $list_menus['parent'][6];
             } elseif (empty($parent['classes'])) {
                 $parent['classes'] = array($list_menus['parent'][6], 'hw-dashicons', 'dashicons');
                 $parent['icon_url'] = '';
                 //remove icon image
             }
         }
         //add submenus
         foreach ($list_menus['sub'] as $id => $item) {
             if ($id == 0 && (!trim($parent['link']) || trim($parent['link']) == '#')) {
                 //valid menu link
                 $parent['link'] = $item[2];
             }
             $this->add_submenu_box($parent_box_id, $item[2], $item[0]);
             //id, url, title
         }
     }
 }