WordPress.org

Make WordPress Core

Ticket #18785: 18785.gary.diff

File 18785.gary.diff, 4.8 KB (added by garyc40, 4 years ago)
  • wp-admin/admin.php

    if ( isset($_GET['page']) ) { 
    8888        $plugin_page = plugin_basename($plugin_page); 
    8989} 
    9090 
    91 if ( isset($_GET['post_type']) ) 
    92         $typenow = sanitize_key($_GET['post_type']); 
    93 else 
    94         $typenow = ''; 
    95  
    96 if ( isset($_GET['taxonomy']) ) 
    97         $taxnow = sanitize_key($_GET['taxonomy']); 
    98 else 
    99         $taxnow = ''; 
    100  
    10191if ( WP_NETWORK_ADMIN ) 
    10292        require(ABSPATH . 'wp-admin/network/menu.php'); 
    10393elseif ( WP_USER_ADMIN ) 
  • wp-admin/includes/screen.php

    function get_current_screen() { 
    333333 * @param string $id Screen id, optional. 
    334334 */ 
    335335function set_current_screen( $id =  '' ) { 
    336         global $current_screen; 
    337  
    338         $current_screen = new WP_Screen( $id ); 
    339  
    340         $current_screen = apply_filters('current_screen', $current_screen); 
     336        WP_Screen::set_current_screen($id); 
    341337} 
    342338 
    343339/** 
    final class WP_Screen { 
    422418         * @var string 
    423419         * @access public 
    424420         */ 
    425         public $post_type; 
     421        public $post_type = ''; 
    426422 
    427423        /** 
    428424         * The taxonomy associated with the screen, if any. 
    final class WP_Screen { 
    431427         * @var string 
    432428         * @access public 
    433429         */ 
    434         public $taxonomy; 
     430        public $taxonomy = ''; 
    435431 
    436432        /** 
    437433         * The help tab data associated with the screen, if any. 
    final class WP_Screen { 
    441437         * @access private 
    442438         */ 
    443439        private static $_help_tabs = array(); 
    444   
     440 
    445441        /** 
    446442         * The help sidebar data associated with screens, if any. 
    447443         * 
    final class WP_Screen { 
    483479         */ 
    484480        private $_screen_settings; 
    485481 
     482        public static function set_current_screen( $screen = '' ) { 
     483                global $current_screen, $typenow, $taxnow; 
     484 
     485                if ( is_string( $screen ) ) 
     486                        $screen = new WP_Screen( $screen ); 
     487 
     488                $current_screen = $screen; 
     489                $current_screen = apply_filters('current_screen', $current_screen); 
     490var_dump( $current_screen ); 
     491                $typenow = $current_screen->post_type; 
     492                $taxnow = $current_screen->taxonomy; 
     493        } 
     494 
    486495        /** 
    487496         * Constructor 
    488497         * 
    final class WP_Screen { 
    491500         * @param string $id A screen id.  If empty, the $hook_suffix global is used to derive the ID. 
    492501         */ 
    493502        public function __construct( $id = '' ) { 
    494                 global $hook_suffix, $typenow, $taxnow; 
    495  
     503                global $hook_suffix; 
    496504                $action = ''; 
    497505 
    498506                if ( empty( $id ) ) { 
    final class WP_Screen { 
    503511                        $screen = str_replace('-new', '', $screen); 
    504512                        $screen = str_replace('-add', '', $screen); 
    505513                        $this->id = $this->base = $screen; 
     514 
     515                        if ( isset( $_GET['post_type'] ) ) 
     516                                $this->post_type = sanitize_key( $_GET['post_type'] ); 
     517 
     518                        if ( isset( $_GET['taxonomy'] ) ) 
     519                                $this->taxonomy = sanitize_key( $_GET['taxonomy'] ); 
    506520                } else { 
    507                         $id = sanitize_key( $id ); 
    508                         if ( false !== strpos($id, '-') ) { 
    509                                 list( $id, $typenow ) = explode('-', $id, 2); 
    510                                 if ( taxonomy_exists( $typenow ) ) { 
    511                                         $id = 'edit-tags'; 
    512                                         $taxnow = $typenow; 
    513                                         $typenow = ''; 
    514                                 } 
    515                         } 
    516                         $this->id = $this->base = $id; 
     521                        $this->id = $this->base = sanitize_key( $id ); 
    517522                } 
    518523 
    519524                $this->action = $action; 
    final class WP_Screen { 
    524529                if ( 'index' == $this->id ) 
    525530                        $this->id = 'dashboard'; 
    526531 
    527                 if ( 'edit' == $this->id ) { 
    528                         if ( empty($typenow) ) 
    529                                 $typenow = 'post'; 
    530                         $this->id .= '-' . $typenow; 
    531                         $this->post_type = $typenow; 
    532                 } elseif ( 'post' == $this->id ) { 
    533                         if ( empty($typenow) ) 
    534                                 $typenow = 'post'; 
    535                         $this->id = $typenow; 
    536                         $this->post_type = $typenow; 
    537                 } elseif ( 'edit-tags' == $this->id ) { 
    538                         if ( empty($taxnow) ) 
    539                                 $taxnow = 'post_tag'; 
    540                         $this->id = 'edit-' . $taxnow; 
    541                         $this->taxonomy = $taxnow; 
     532                // edit-tags.php should map to the correct taxonomy 
     533                if ( 'edit-tags' == $this->id ) { 
     534                        if ( empty( $this->taxonomy ) ) 
     535                                $this->taxonomy = 'post_tag'; 
     536                        $this->id = 'edit-' . $this->taxonomy; 
     537                } else if ( 0 === strpos( 'edit-', $this->id ) && empty( $this->post_type ) ) { 
     538                        // infer the $post_type from the ID if necessary 
     539                        $this->post_type = substr( $this->id, 5 ); 
     540                } 
     541 
     542                if ( $this->id == 'edit' ) { 
     543                        if ( empty( $this->post_type ) ) 
     544                                $this->post_type = 'post'; 
     545                        $this->id = 'edit-' . $this->post_type; 
    542546                } 
    543547 
    544548                $this->is_network = is_network_admin(); 
    final class WP_Screen { 
    561565        } 
    562566 
    563567        function add_old_compat_help( $help ) { 
    564                 self::$_old_compat_help[ $this->id ] = $help;    
     568                self::$_old_compat_help[ $this->id ] = $help; 
    565569        } 
    566570 
    567571        /** 
    final class WP_Screen { 
    596600         * 
    597601         * @since 3.3.0 
    598602         * 
    599          * @param string  
     603         * @param string 
    600604         */ 
    601605        public function get_option( $option, $key = false ) { 
    602606                if ( ! isset( self::$_options[ $this->id ][ $option ] ) )