WordPress.org

Make WordPress Core

Ticket #18785: 18785.gary.diff

File 18785.gary.diff, 4.8 KB (added by garyc40, 7 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 ] ) )