WordPress.org

Make WordPress Core

Ticket #16050: menu_page+submenu_page-hooks.diff

File menu_page+submenu_page-hooks.diff, 2.6 KB (added by mikeschinkel, 3 years ago)

Adds 'menu_page' and 'submenu_page' hooks

  • wp-content/themes/twentyten/functions.php

     
    499499        ); 
    500500} 
    501501endif; 
     502 
     503add_filter('menu_page','my_menu_page',10,3); 
     504add_filter('submenu_page','my_menu_page',10,5); 
     505function my_menu_page( $html, $item, $key, $item2 = null, $key2 = null ) { 
     506        return $html; 
     507} 
  • wp-admin/menu-header.php

     
    9595                                $menu_file = substr($menu_file, 0, $pos); 
    9696                        if ( ('index.php' != $item[2]) && file_exists(WP_PLUGIN_DIR . "/$menu_file") || !empty($menu_hook) ) { 
    9797                                $admin_is_parent = true; 
    98                                 echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}'>$img</a></div>$toggle<a href='admin.php?page={$item[2]}'$class$tabindex>{$item[0]}</a>"; 
     98                                $page = "admin.php?page={$item[2]}"; 
    9999                        } else { 
    100                                 echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}'>$img</a></div>$toggle<a href='{$item[2]}'$class$tabindex>{$item[0]}</a>"; 
     100                                $page = $item[2]; 
    101101                        } 
     102                        echo apply_filters( 'menu_page', "\n\t<div class='wp-menu-image'><a href='{$page}'>$img</a></div>$toggle<a href='{$page}'$class$tabindex>{$item[0]}</a>", $item, $key ); 
    102103                } 
    103104 
    104105                if ( !empty($submenu[$item[2]]) ) { 
     
    146147                                if ( ( ('index.php' != $sub_item[2]) && file_exists(WP_PLUGIN_DIR . "/$sub_file") ) || ! empty($menu_hook) ) { 
    147148                                        // If admin.php is the current page or if the parent exists as a file in the plugins or admin dir 
    148149                                        if ( (!$admin_is_parent && file_exists(WP_PLUGIN_DIR . "/$menu_file") && !is_dir(WP_PLUGIN_DIR . "/{$item[2]}")) || file_exists($menu_file) ) 
    149                                                 $sub_item_url = add_query_arg( array('page' => $sub_item[2]), $item[2] ); 
     150                                                $page = $item[2]; 
    150151                                        else 
    151                                                 $sub_item_url = add_query_arg( array('page' => $sub_item[2]), 'admin.php' ); 
    152                                         $sub_item_url = esc_url($sub_item_url); 
    153                                         echo "<li$class><a href='$sub_item_url'$class$tabindex>$title</a></li>"; 
     152                                                $page = 'admin.php'; 
     153                                        $sub_item_url = esc_url( add_query_arg( array('page' => $sub_item[2]), $page ) ); 
    154154                                } else { 
    155                                         echo "<li$class><a href='{$sub_item[2]}'$class$tabindex>$title</a></li>"; 
     155                                        $sub_item_url = $sub_item[2]; 
    156156                                } 
     157                                echo apply_filters( 'submenu_page', "<li$class><a href='$sub_item_url'$class$tabindex>$title</a></li>", $sub_item, $sub_key, $item, $key ); 
    157158                        } 
    158159                        echo "</ul></div>"; 
    159160                }