WordPress.org

Make WordPress Core

Ticket #16204: admin-includes-plugin-hooks.diff

File admin-includes-plugin-hooks.diff, 7.8 KB (added by mikeschinkel, 3 years ago)

Add hooks menu_page_url, admin_page_parent, admin_page_title, plugin_page_hookname and user_can_access_admin_page to /wp-admin/includes/plugin.php.

  • wp-admin/includes/plugin.php

     
    13201320                $url = ''; 
    13211321        } 
    13221322 
    1323         $url = esc_url($url); 
     1323        $url = apply_filters( 'menu_page_url', esc_url($url), $menu_slug ); 
    13241324 
    13251325        if ( $echo ) 
    13261326                echo $url; 
     
    13421342        global $_wp_real_parent_file; 
    13431343        global $_wp_menu_nopriv; 
    13441344        global $_wp_submenu_nopriv; 
     1345        $original_parent = $parent; 
    13451346 
    13461347        if ( !empty ( $parent ) && 'admin.php' != $parent ) { 
    13471348                if ( isset( $_wp_real_parent_file[$parent] ) ) 
    13481349                        $parent = $_wp_real_parent_file[$parent]; 
    1349                 return $parent; 
     1350                return apply_filters( 'admin_page_parent', $parent, $original_parent ); 
    13501351        } 
    13511352 
    13521353        /* 
     
    13541355                if ( isset( $_wp_real_parent_file[$parent_file] ) ) 
    13551356                        $parent_file = $_wp_real_parent_file[$parent_file]; 
    13561357 
    1357                 return $parent_file; 
     1358                return apply_filters( 'admin_page_parent', $parent_file, $original_parent ); 
    13581359        } 
    13591360        */ 
    13601361 
     
    13641365                                $parent_file = $plugin_page; 
    13651366                                if ( isset( $_wp_real_parent_file[$parent_file] ) ) 
    13661367                                        $parent_file = $_wp_real_parent_file[$parent_file]; 
    1367                                 return $parent_file; 
     1368                                return apply_filters( 'admin_page_parent', $parent_file, $original_parent ); 
    13681369                        } 
    13691370                } 
    13701371                if ( isset( $_wp_menu_nopriv[$plugin_page] ) ) { 
    13711372                        $parent_file = $plugin_page; 
    13721373                        if ( isset( $_wp_real_parent_file[$parent_file] ) ) 
    13731374                                        $parent_file = $_wp_real_parent_file[$parent_file]; 
    1374                         return $parent_file; 
     1375                        return apply_filters( 'admin_page_parent', $parent_file, $original_parent ); 
    13751376                } 
    13761377        } 
    13771378 
     
    13791380                $parent_file = $pagenow; 
    13801381                if ( isset( $_wp_real_parent_file[$parent_file] ) ) 
    13811382                        $parent_file = $_wp_real_parent_file[$parent_file]; 
    1382                 return $parent_file; 
     1383                return apply_filters( 'admin_page_parent', $parent_file, $original_parent ); 
    13831384        } 
    13841385 
    13851386        foreach (array_keys( (array)$submenu ) as $parent) { 
     
    13881389                                $parent = $_wp_real_parent_file[$parent]; 
    13891390                        if ( !empty($typenow) && ($submenu_array[2] == "$pagenow?post_type=$typenow") ) { 
    13901391                                $parent_file = $parent; 
    1391                                 return $parent; 
     1392                                return apply_filters( 'admin_page_parent', $parent, $original_parent ); 
    13921393                        } elseif ( $submenu_array[2] == $pagenow && empty($typenow) && ( empty($parent_file) || false === strpos($parent_file, '?') ) ) { 
    13931394                                $parent_file = $parent; 
    1394                                 return $parent; 
     1395                                return apply_filters( 'admin_page_parent', $parent, $original_parent ); 
    13951396                        } else 
    13961397                                if ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) { 
    13971398                                        $parent_file = $parent; 
    1398                                         return $parent; 
     1399                                        return apply_filters( 'admin_page_parent', $parent, $original_parent ); 
    13991400                                } 
    14001401                } 
    14011402        } 
    14021403 
    14031404        if ( empty($parent_file) ) 
    14041405                $parent_file = ''; 
    1405         return ''; 
     1406        return apply_filters( 'admin_page_parent', '', $original_parent ); 
    14061407} 
    14071408 
    14081409function get_admin_page_title() { 
     
    14141415        global $typenow; 
    14151416 
    14161417        if ( ! empty ( $title ) ) 
    1417                 return $title; 
     1418                return apply_filters('admin_page_title',$title); 
    14181419 
    14191420        $hook = get_plugin_page_hook( $plugin_page, $pagenow ); 
    14201421 
     
    14251426                        if ( isset( $menu_array[3] ) ) { 
    14261427                                if ( $menu_array[2] == $pagenow ) { 
    14271428                                        $title = $menu_array[3]; 
    1428                                         return $menu_array[3]; 
     1429                                        return apply_filters('admin_page_title',$menu_array[3]); 
    14291430                                } else 
    14301431                                        if ( isset( $plugin_page ) && ($plugin_page == $menu_array[2] ) && ($hook == $menu_array[3] ) ) { 
    14311432                                                $title = $menu_array[3]; 
    1432                                                 return $menu_array[3]; 
     1433                                                return apply_filters('admin_page_title',$menu_array[3]); 
    14331434                                        } 
    14341435                        } else { 
    14351436                                $title = $menu_array[0]; 
    1436                                 return $title; 
     1437                                return apply_filters('admin_page_title',$title); 
    14371438                        } 
    14381439                } 
    14391440        } else { 
     
    14501451                                        ) 
    14511452                                        ) { 
    14521453                                                $title = $submenu_array[3]; 
    1453                                                 return $submenu_array[3]; 
     1454                                                return apply_filters('admin_page_title',$submenu_array[3]); 
    14541455                                        } 
    14551456 
    14561457                                if ( $submenu_array[2] != $pagenow || isset( $_GET['page'] ) ) // not the current page 
     
    14581459 
    14591460                                if ( isset( $submenu_array[3] ) ) { 
    14601461                                        $title = $submenu_array[3]; 
    1461                                         return $submenu_array[3]; 
     1462                                        return apply_filters('admin_page_title',$submenu_array[3]); 
    14621463                                } else { 
    14631464                                        $title = $submenu_array[0]; 
    1464                                         return $title; 
     1465                                        return apply_filters('admin_page_title',$title); 
    14651466                                } 
    14661467                        } 
    14671468                } 
     
    14731474                                        ( $parent1 == $menu_array[2] ) ) 
    14741475                                        { 
    14751476                                                $title = $menu_array[3]; 
    1476                                                 return $menu_array[3]; 
     1477                                                return apply_filters('admin_page_title',$menu_array[3]); 
    14771478                                        } 
    14781479                        } 
    14791480                } 
    14801481        } 
    14811482 
    1482         return $title; 
     1483        return apply_filters('admin_page_title',$title); 
    14831484} 
    14841485 
    14851486function get_plugin_page_hook( $plugin_page, $parent_page ) { 
     
    15081509 
    15091510        $plugin_name = preg_replace( '!\.php!', '', $plugin_page ); 
    15101511 
    1511         return $page_type . '_page_' . $plugin_name; 
     1512        return apply_filters( 'plugin_page_hookname', $page_type . '_page_' . $plugin_name,  $plugin_page, $parent_page ); 
    15121513} 
    15131514 
    15141515function user_can_access_admin_page() { 
     
    15231524        $parent = get_admin_page_parent(); 
    15241525 
    15251526        if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) ) 
    1526                 return false; 
     1527                return apply_filters( 'user_can_access_admin_page', false ); 
    15271528 
    15281529        if ( isset( $plugin_page ) ) { 
    15291530                if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) ) 
    1530                         return false; 
     1531                        return apply_filters( 'user_can_access_admin_page', false ); 
    15311532 
    15321533                $hookname = get_plugin_page_hookname($plugin_page, $parent); 
    15331534 
    15341535                if ( !isset($_registered_pages[$hookname]) ) 
    1535                         return false; 
     1536                        return apply_filters( 'user_can_access_admin_page', false ); 
    15361537        } 
    15371538 
    15381539        if ( empty( $parent) ) { 
    15391540                if ( isset( $_wp_menu_nopriv[$pagenow] ) ) 
    1540                         return false; 
     1541                        return apply_filters( 'user_can_access_admin_page', false ); 
    15411542                if ( isset( $_wp_submenu_nopriv[$pagenow][$pagenow] ) ) 
    1542                         return false; 
     1543                        return apply_filters( 'user_can_access_admin_page', false ); 
    15431544                if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) 
    1544                         return false; 
     1545                        return apply_filters( 'user_can_access_admin_page', false ); 
    15451546                if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) 
    1546                         return false; 
     1547                        return apply_filters( 'user_can_access_admin_page', false ); 
    15471548                foreach (array_keys( $_wp_submenu_nopriv ) as $key ) { 
    15481549                        if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) ) 
    1549                                 return false; 
     1550                                return apply_filters( 'user_can_access_admin_page', false ); 
    15501551                        if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) ) 
    1551                         return false; 
     1552                                return apply_filters( 'user_can_access_admin_page', false ); 
    15521553                } 
    1553                 return true; 
     1554                return apply_filters( 'user_can_access_admin_page', true ); 
    15541555        } 
    15551556 
    15561557        if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) 
    1557                 return false; 
     1558                return apply_filters( 'user_can_access_admin_page', false ); 
    15581559 
    15591560        if ( isset( $submenu[$parent] ) ) { 
    15601561                foreach ( $submenu[$parent] as $submenu_array ) { 
    15611562                        if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) { 
    15621563                                if ( current_user_can( $submenu_array[1] )) 
    1563                                         return true; 
     1564                                        return apply_filters( 'user_can_access_admin_page', true ); 
    15641565                                else 
    1565                                         return false; 
     1566                                        return apply_filters( 'user_can_access_admin_page', false ); 
    15661567                        } else if ( $submenu_array[2] == $pagenow ) { 
    15671568                                if ( current_user_can( $submenu_array[1] )) 
    1568                                         return true; 
     1569                                        return apply_filters( 'user_can_access_admin_page', true ); 
    15691570                                else 
    1570                                         return false; 
     1571                                        return apply_filters( 'user_can_access_admin_page', false ); 
    15711572                        } 
    15721573                } 
    15731574        } 
     
    15751576        foreach ( $menu as $menu_array ) { 
    15761577                if ( $menu_array[2] == $parent) { 
    15771578                        if ( current_user_can( $menu_array[1] )) 
    1578                                 return true; 
     1579                                return apply_filters( 'user_can_access_admin_page', true ); 
    15791580                        else 
    1580                                 return false; 
     1581                                return apply_filters( 'user_can_access_admin_page', false ); 
    15811582                } 
    15821583        } 
    15831584 
    1584         return true; 
     1585        return apply_filters( 'user_can_access_admin_page', true ); 
    15851586} 
    15861587 
    15871588/* Whitelist functions */