WordPress.org

Make WordPress Core

Ticket #18785: 18785.5.diff

File 18785.5.diff, 24.0 KB (added by nacin, 4 years ago)

Sets screen->post_type for current edit-tags.php screens. Restores [15664].

  • wp-admin/includes/deprecated.php

     
    805805        $current_screen->render_screen_meta(); 
    806806} 
    807807 
     808/** 
     809 * Favorite actions were deprecated in version 3.2. Use the admin bar instead. 
     810 * 
     811 * @since 2.7.0 
     812 * @deprecated 3.2.0 
     813 */ 
     814function favorite_actions() { 
     815        _deprecated_function( __FUNCTION__, '3.2', 'WP_Admin_Bar' ); 
     816} 
     817 
    808818function media_upload_image() { 
    809819        __deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); 
    810820        return wp_media_upload_handler(); 
  • wp-admin/includes/screen.php

     
    1111 * 
    1212 * @since 2.7.0 
    1313 * 
    14  * @param string|object $screen The screen you want the headers for 
     14 * @param string|WP_Screen $screen The screen you want the headers for 
    1515 * @return array Containing the headers in the format id => UI String 
    1616 */ 
    1717function get_column_headers( $screen ) { 
     
    3131 * 
    3232 * @since 2.7.0 
    3333 * 
    34  * @param string|object $screen The screen you want the hidden columns for 
     34 * @param string|WP_Screen $screen The screen you want the hidden columns for 
    3535 * @return array 
    3636 */ 
    3737function get_hidden_columns( $screen ) { 
     
    4242} 
    4343 
    4444/** 
    45  * {@internal Missing Short Description}} 
     45 * Prints the meta box preferences for screen meta. 
    4646 * 
    4747 * @since 2.7.0 
    4848 * 
    49  * @param unknown_type $screen 
     49 * @param string|WP_Screen $screen 
    5050 */ 
    5151function meta_box_prefs( $screen ) { 
    5252        global $wp_meta_boxes; 
    5353 
    54         if ( is_string($screen) ) 
    55                 $screen = convert_to_screen($screen); 
     54        if ( is_string( $screen ) ) 
     55                $screen = convert_to_screen( $screen ); 
    5656 
    5757        if ( empty($wp_meta_boxes[$screen->id]) ) 
    5858                return; 
     
    108108} 
    109109 
    110110/** 
    111  * {@internal Missing Short Description}} 
    112  * 
    113  * @since 2.7.0 
    114  */ 
    115 function favorite_actions( $screen = null ) { 
    116         $default_action = false; 
    117  
    118         if ( is_string($screen) ) 
    119                 $screen = convert_to_screen($screen); 
    120  
    121         if ( $screen->is_user ) 
    122                 return; 
    123  
    124         if ( isset($screen->post_type) ) { 
    125                 $post_type_object = get_post_type_object($screen->post_type); 
    126                 if ( 'add' != $screen->action ) 
    127                         $default_action = array('post-new.php?post_type=' . $post_type_object->name => array($post_type_object->labels->new_item, $post_type_object->cap->edit_posts)); 
    128                 else 
    129                         $default_action = array('edit.php?post_type=' . $post_type_object->name => array($post_type_object->labels->name, $post_type_object->cap->edit_posts)); 
    130         } 
    131  
    132         if ( !$default_action ) { 
    133                 if ( $screen->is_network ) { 
    134                         $default_action = array('sites.php' => array( __('Sites'), 'manage_sites')); 
    135                 } else { 
    136                         switch ( $screen->id ) { 
    137                                 case 'upload': 
    138                                         $default_action = array('media-new.php' => array(__('New Media'), 'upload_files')); 
    139                                         break; 
    140                                 case 'media': 
    141                                         $default_action = array('upload.php' => array(__('Edit Media'), 'upload_files')); 
    142                                         break; 
    143                                 case 'link-manager': 
    144                                 case 'link': 
    145                                         if ( 'add' != $screen->action ) 
    146                                                 $default_action = array('link-add.php' => array(__('New Link'), 'manage_links')); 
    147                                         else 
    148                                                 $default_action = array('link-manager.php' => array(__('Edit Links'), 'manage_links')); 
    149                                         break; 
    150                                 case 'users': 
    151                                         $default_action = array('user-new.php' => array(__('New User'), 'create_users')); 
    152                                         break; 
    153                                 case 'user': 
    154                                         $default_action = array('users.php' => array(__('Edit Users'), 'edit_users')); 
    155                                         break; 
    156                                 case 'plugins': 
    157                                         $default_action = array('plugin-install.php' => array(__('Install Plugins'), 'install_plugins')); 
    158                                         break; 
    159                                 case 'plugin-install': 
    160                                         $default_action = array('plugins.php' => array(__('Manage Plugins'), 'activate_plugins')); 
    161                                         break; 
    162                                 case 'themes': 
    163                                         $default_action = array('theme-install.php' => array(__('Install Themes'), 'install_themes')); 
    164                                         break; 
    165                                 case 'theme-install': 
    166                                         $default_action = array('themes.php' => array(__('Manage Themes'), 'switch_themes')); 
    167                                         break; 
    168                                 default: 
    169                                         $default_action = array('post-new.php' => array(__('New Post'), 'edit_posts')); 
    170                                         break; 
    171                         } 
    172                 } 
    173         } 
    174  
    175         if ( !$screen->is_network ) { 
    176                 $actions = array( 
    177                         'post-new.php' => array(__('New Post'), 'edit_posts'), 
    178                         'edit.php?post_status=draft' => array(__('Drafts'), 'edit_posts'), 
    179                         'post-new.php?post_type=page' => array(__('New Page'), 'edit_pages'), 
    180                         'media-new.php' => array(__('Upload'), 'upload_files'), 
    181                         'edit-comments.php' => array(__('Comments'), 'moderate_comments') 
    182                         ); 
    183         } else { 
    184                 $actions = array( 
    185                         'sites.php' => array( __('Sites'), 'manage_sites'), 
    186                         'users.php' => array( __('Users'), 'manage_network_users') 
    187                 ); 
    188         } 
    189  
    190         $default_key = array_keys($default_action); 
    191         $default_key = $default_key[0]; 
    192         if ( isset($actions[$default_key]) ) 
    193                 unset($actions[$default_key]); 
    194         $actions = array_merge($default_action, $actions); 
    195         $actions = apply_filters( 'favorite_actions', $actions, $screen ); 
    196  
    197         $allowed_actions = array(); 
    198         foreach ( $actions as $action => $data ) { 
    199                 if ( current_user_can($data[1]) ) 
    200                         $allowed_actions[$action] = $data[0]; 
    201         } 
    202  
    203         if ( empty($allowed_actions) ) 
    204                 return; 
    205  
    206         $first = array_keys($allowed_actions); 
    207         $first = $first[0]; 
    208         echo '<div id="favorite-actions">'; 
    209         echo '<div id="favorite-first"><a href="' . $first . '">' . $allowed_actions[$first] . '</a></div><div id="favorite-toggle"><br /></div>'; 
    210         echo '<div id="favorite-inside">'; 
    211  
    212         array_shift($allowed_actions); 
    213  
    214         foreach ( $allowed_actions as $action => $label) { 
    215                 echo "<div class='favorite-action'><a href='$action'>"; 
    216                 echo $label; 
    217                 echo "</a></div>\n"; 
    218         } 
    219         echo "</div></div>\n"; 
    220 } 
    221  
    222 /** 
    223111 * Convert a screen string to a screen object 
    224112 * 
    225113 * @since 3.0.0 
    226114 * 
    227  * @param string $screen The name of the screen 
    228  * @return object An object containing the safe screen name and id 
     115 * @param string $hook_name The hook name (also known as the hook suffix) used to determine the screen. 
     116 * @return WP_Screen Screen object. 
    229117 */ 
    230 function convert_to_screen( $screen ) { 
    231         $screen = str_replace( array('.php', '-new', '-add', '-network', '-user' ), '', $screen); 
    232  
    233         if ( is_network_admin() ) 
    234                 $screen .= '-network'; 
    235         elseif ( is_user_admin() ) 
    236                 $screen .= '-user'; 
    237  
    238         $screen = (string) apply_filters( 'screen_meta_screen', $screen ); 
    239         $screen = (object) array( 'id' => $screen, 'base' => $screen ); 
    240         return $screen; 
     118function convert_to_screen( $hook_name ) { 
     119        return WP_Screen::get( $hook_name ); 
    241120} 
    242121 
    243122/** 
     
    256135        if ( is_string( $screen ) ) 
    257136                $screen = convert_to_screen( $screen ); 
    258137 
    259         WP_Screen::add_old_compat_help( $screen->id, $help ); 
     138        WP_Screen::add_old_compat_help( $screen, $help ); 
    260139} 
    261140 
    262141/** 
     
    277156        return $current_screen->add_option( $option, $args ); 
    278157} 
    279158 
     159/** 
     160 * Displays a screen icon. 
     161 * 
     162 * @uses get_screen_icon() 
     163 * @since 2.7.0 
     164 * 
     165 * @param string|WP_Screen $screen Optional. Accepts a screen object (and defaults to the current screen object) 
     166 *      which it uses to determine an icon HTML ID. Or, if a string is provided, it is used to form the icon HTML ID. 
     167 */ 
    280168function screen_icon( $screen = '' ) { 
    281169        echo get_screen_icon( $screen ); 
    282170} 
    283171 
     172/** 
     173 * Gets a screen icon. 
     174 * 
     175 * @since 3.2.0 
     176 * 
     177 * @param string|WP_Screen $screen Optional. Accepts a screen object (and defaults to the current screen object) 
     178 *      which it uses to determine an icon HTML ID. Or, if a string is provided, it is used to form the icon HTML ID. 
     179 * @return string HTML for the screen icon. 
     180 */ 
    284181function get_screen_icon( $screen = '' ) { 
    285         global $current_screen, $typenow; 
     182        if ( empty( $screen ) ) 
     183                $screen = get_current_screen(); 
     184        elseif ( is_string( $screen ) ) 
     185                $icon_id = $screen; 
    286186 
    287         if ( empty($screen) ) 
    288                 $screen = $current_screen; 
    289         elseif ( is_string($screen) ) 
    290                 $name = $screen; 
    291  
    292187        $class = 'icon32'; 
    293188 
    294         if ( empty($name) ) { 
    295                 if ( !empty($screen->parent_base) ) 
    296                         $name = $screen->parent_base; 
     189        if ( empty( $icon_id ) ) { 
     190                if ( $screen->parent_base ) 
     191                        $icon_id = $screen->parent_base; 
    297192                else 
    298                         $name = $screen->base; 
     193                        $icon_id = $screen->base; 
    299194 
    300                 if ( 'edit' == $name && isset($screen->post_type) && 'page' == $screen->post_type ) 
    301                         $name = 'edit-pages'; 
     195                if ( 'page' == $screen->post_type ) 
     196                        $icon_id = 'edit-pages'; 
    302197 
    303                 $post_type = ''; 
    304                 if ( isset( $screen->post_type ) ) 
    305                         $post_type = $screen->post_type; 
    306                 elseif ( $current_screen == $screen ) 
    307                         $post_type = $typenow; 
    308                 if ( $post_type ) 
    309                         $class .= ' ' . sanitize_html_class( 'icon32-posts-' . $post_type ); 
     198                if ( $screen->post_type ) 
     199                        $class .= ' ' . sanitize_html_class( 'icon32-posts-' . $screen->post_type ); 
    310200        } 
    311201 
    312         return '<div id="icon-' . esc_attr( $name ) . '" class="' . $class . '"><br /></div>'; 
     202        return '<div id="icon-' . esc_attr( $icon_id ) . '" class="' . $class . '"><br /></div>'; 
    313203} 
    314204 
    315205/** 
    316  *  Get the current screen object 
     206 * Get the current screen object 
    317207 * 
    318  *  @since 3.1.0 
     208 * @since 3.1.0 
    319209 * 
    320  * @return object Current screen object 
     210 * @return WP_Screen Current screen object 
    321211 */ 
    322212function get_current_screen() { 
    323213        global $current_screen; 
    324214 
    325         if ( !isset($current_screen) ) 
     215        if ( ! isset( $current_screen ) ) 
    326216                return null; 
    327217 
    328218        return $current_screen; 
     
    335225 * 
    336226 * @uses $current_screen 
    337227 * 
    338  * @param string $id Screen id, optional. 
     228 * @param string $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen, 
     229 *      or an existing screen object. 
    339230 */ 
    340 function set_current_screen( $id =  '' ) { 
    341         global $current_screen; 
    342  
    343         $current_screen = new WP_Screen( $id ); 
    344  
    345         $current_screen = apply_filters('current_screen', $current_screen); 
     231function set_current_screen( $hook_name =  '' ) { 
     232        WP_Screen::get( $hook_name )->set_current_screen(); 
    346233} 
    347234 
    348235/** 
    349  * A class representing the current admin screen. 
     236 * A class representing the admin screen. 
    350237 * 
    351238 * @since 3.3.0 
    352239 * @access public 
    353240 */ 
    354241final class WP_Screen { 
    355242        /** 
    356          * Any action associated with the screen.  'add' for *-add.php and *-new.php screens. Empty otherwise. 
     243         * Any action associated with the screen. 'add' for *-add.php and *-new.php screens. Empty otherwise. 
    357244         * 
    358245         * @since 3.3.0 
    359246         * @var string 
     
    422309        /** 
    423310         * The post type associated with the screen, if any. 
    424311         * The 'edit.php?post_type=page' screen has a post type of 'page'. 
     312         * The 'edit-tags.php?taxonomy=$taxonomy&post_type=page' screen has a post type of 'page'. 
    425313         * 
    426314         * @since 3.3.0 
    427315         * @var string 
     
    445333         * @var array 
    446334         * @access private 
    447335         */ 
    448         private static $_help_tabs = array(); 
    449   
     336        private $_help_tabs = array(); 
     337 
    450338        /** 
    451339         * The help sidebar data associated with screens, if any. 
    452340         * 
     
    454342         * @var string 
    455343         * @access private 
    456344         */ 
    457         private static $_help_sidebar = array(); 
     345        private $_help_sidebar = ''; 
    458346 
    459347        /** 
    460348         * Stores old string-based help. 
     
    468356         * @var array 
    469357         * @access private 
    470358         */ 
    471         private static $_options = array(); 
     359        private $_options = array(); 
    472360 
    473361        /** 
     362         * The screen object registry. 
     363         * 
     364         * @since 3.3.0 
     365         * @var array 
     366         * @access private 
     367         */ 
     368        private static $_registry = array(); 
     369 
     370        /** 
    474371         * Stores the result of the public show_screen_options function. 
    475372         * 
    476373         * @since 3.3.0 
     
    489386        private $_screen_settings; 
    490387 
    491388        /** 
    492          * Constructor 
     389         * Fetches a screen object. 
    493390         * 
    494391         * @since 3.3.0 
     392         * @access public 
    495393         * 
    496          * @param string $id A screen id.  If empty, the $hook_suffix global is used to derive the ID. 
     394         * @param string $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen. 
     395         *      Defaults to the current $hook_suffix global. 
     396         * @return WP_Screen Screen object. 
    497397         */ 
    498         public function __construct( $id = '' ) { 
    499                 global $hook_suffix, $typenow, $taxnow; 
     398        public function get( $hook_name = '' ) { 
    500399 
    501                 $action = ''; 
     400                if ( is_a( $hook_name, 'WP_Screen' ) ) 
     401                        return $hook_name; 
    502402 
    503                 if ( empty( $id ) ) { 
    504                         $screen = $hook_suffix; 
    505                         $screen = str_replace('.php', '', $screen); 
    506                         if ( preg_match('/-add|-new$/', $screen) ) 
    507                                 $action = 'add'; 
    508                         $screen = str_replace('-new', '', $screen); 
    509                         $screen = str_replace('-add', '', $screen); 
    510                         $this->id = $this->base = $screen; 
    511                 } else { 
    512                         $id = sanitize_key( $id ); 
    513                         if ( false !== strpos($id, '-') ) { 
    514                                 list( $id, $typenow ) = explode('-', $id, 2); 
    515                                 if ( taxonomy_exists( $typenow ) ) { 
     403                $action = $post_type = $taxonomy = ''; 
     404 
     405                if ( $hook_name ) { 
     406                        if ( '-network' == substr( $hook_name, -8 ) ) 
     407                                $hook_name = str_replace( '-network', '', $hook_name ); 
     408                        elseif ( '-user' == substr( $hook_name, -5 ) ) 
     409                                $hook_name = str_replace( '-user', '', $hook_name ); 
     410                        $id = sanitize_key( $hook_name ); 
     411                        if ( false !== strpos( $id, '-' ) ) { 
     412                                list( $id, $second ) = explode( '-', $id, 2 ); 
     413                                if ( taxonomy_exists( $second ) ) { 
    516414                                        $id = 'edit-tags'; 
    517                                         $taxnow = $typenow; 
    518                                         $typenow = ''; 
     415                                        $taxonomy = $second; 
     416                                } elseif ( post_type_exists( $second ) ) { 
     417                                        $post_type = $second; 
     418                                } else { 
     419                                        $id .= '-' . $second; 
    519420                                } 
    520421                        } 
    521                         $this->id = $this->base = $id; 
     422                } else { 
     423                        $id = $GLOBALS['hook_suffix']; 
     424                        $id = str_replace( '.php', '', $id ); 
     425                        if ( in_array( substr( $id, -4 ), array( '-add', '-new' ) ) ) 
     426                                $action = 'add'; 
     427                        $id = str_replace( array( '-new', '-add' ), '', $id ); 
    522428                } 
    523429 
    524                 $this->action = $action; 
     430                if ( 'index' == $id ) 
     431                        $id = 'dashboard'; 
    525432 
    526                 // Map index to dashboard 
    527                 if ( 'index' == $this->base ) 
    528                         $this->base = 'dashboard'; 
    529                 if ( 'index' == $this->id ) 
    530                         $this->id = 'dashboard'; 
     433                $base = $id; 
    531434 
    532                 if ( 'edit' == $this->id ) { 
    533                         if ( empty($typenow) ) 
    534                                 $typenow = 'post'; 
    535                         $this->id .= '-' . $typenow; 
    536                         $this->post_type = $typenow; 
    537                 } elseif ( 'post' == $this->id ) { 
    538                         if ( empty($typenow) ) 
    539                                 $typenow = 'post'; 
    540                         $this->id = $typenow; 
    541                         $this->post_type = $typenow; 
    542                 } elseif ( 'edit-tags' == $this->id ) { 
    543                         if ( empty($taxnow) ) 
    544                                 $taxnow = 'post_tag'; 
    545                         $this->id = 'edit-' . $taxnow; 
    546                         $this->taxonomy = $taxnow; 
     435                // If this is the current screen, see if we can be more accurate for post types and taxonomies. 
     436                if ( ! $hook_name ) { 
     437                        switch ( $base ) { 
     438                                case 'post' : 
     439                                        if ( isset( $_GET['post'] ) ) 
     440                                                $post_id = (int) $_GET['post']; 
     441                                        elseif ( isset( $_POST['post_ID'] ) ) 
     442                                                $post_id = (int) $_POST['post_ID']; 
     443                                        else 
     444                                                $post_id = 0; 
     445 
     446                                        if ( $post_id ) { 
     447                                                $post = get_post( $post_id ); 
     448                                                if ( $post ) 
     449                                                        $post_type = $post->post_type; 
     450                                        } elseif ( isset( $_POST['post_type'] ) && post_type_exists( $_POST['post_type'] ) ) { 
     451                                                $post_type = $_GET['post_type']; 
     452                                        } elseif ( $action == 'add' && isset( $_GET['post_type'] ) && post_type_exists( $_GET['post_type'] ) ) { 
     453                                                $post_type = $_GET['post_type']; 
     454                                        } 
     455                                        break; 
     456                                case 'edit' : 
     457                                        if ( isset( $_GET['post_type'] ) && post_type_exists( $_GET['post_type'] ) ) 
     458                                                $post_type = $_GET['post_type']; 
     459                                        break; 
     460                                case 'edit-tags' : 
     461                                        if ( isset( $_REQUEST['taxonomy'] ) && taxonomy_exists( $_REQUEST['taxonomy'] ) ) 
     462                                                $taxonomy = $_REQUEST['taxonomy']; 
     463                                        if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) ) 
     464                                                $post_type = $_REQUEST['post_type']; 
     465                                        else 
     466                                                $post_type = 'post'; 
     467                                        break; 
     468                        } 
    547469                } 
    548470 
    549                 $this->is_network = is_network_admin(); 
    550                 $this->is_user = is_user_admin(); 
     471                switch ( $base ) { 
     472                        case 'post' : 
     473                                if ( ! $post_type ) 
     474                                        $post_type = 'post'; 
     475                                $id = $post_type; 
     476                                break; 
     477                        case 'edit' : 
     478                                if ( ! $post_type ) 
     479                                        $post_type = 'post'; 
     480                                $id .= '-' . $post_type; 
     481                                break; 
     482                        case 'edit-tags' : 
     483                                if ( ! $taxonomy ) 
     484                                        $taxonomy = 'post_tag'; 
     485                                $id = 'edit-' . $taxonomy; 
     486                                break; 
     487                } 
    551488 
    552                 if ( $this->is_network ) { 
    553                         $this->base .= '-network'; 
    554                         $this->id .= '-network'; 
    555                 } elseif ( $this->is_user ) { 
    556                         $this->base .= '-user'; 
    557                         $this->id .= '-user'; 
     489                if ( is_network_admin() ) { 
     490                        $id  .= '-network'; 
     491                        $base .= '-network'; 
     492                } elseif ( is_user_admin() ) { 
     493                        $id  .= '-user'; 
     494                        $base .= '-user'; 
    558495                } 
    559496 
    560                 if ( ! isset( self::$_help_tabs[ $this->id ] ) ) 
    561                         self::$_help_tabs[ $this->id ] = array(); 
    562                 if ( ! isset( self::$_help_sidebar[ $this->id ] ) ) 
    563                         self::$_help_sidebar[ $this->id ] = ''; 
    564                 if ( ! isset( self::$_options[ $this->id ] ) ) 
    565                         self::$_options[ $this->id ] = array(); 
     497                if ( isset( self::$_registry[ $id ] ) ) 
     498                        return self::$_registry[ $id ]; 
     499 
     500                $screen = new WP_Screen(); 
     501                $screen->id         = $id; 
     502                $screen->base       = $base; 
     503                $screen->action     = $action; 
     504                $screen->post_type  = $post_type; 
     505                $screen->taxonomy   = $taxonomy; 
     506                $screen->is_user    = is_user_admin(); 
     507                $screen->is_network = is_network_admin(); 
     508 
     509                self::$_registry[ $id ] = $screen; 
     510 
     511                return $screen; 
    566512        } 
    567513 
     514        /** 
     515         * Makes the screen object the current screen. 
     516         * 
     517         * @see set_current_screen() 
     518         * @since 3.3.0 
     519         */ 
     520        function set_current_screen() { 
     521                global $current_screen, $taxnow, $typenow; 
     522                $current_screen = $this; 
     523                $taxnow = $this->taxonomy; 
     524                $typenow = $this->post_type; 
     525                $current_screen = apply_filters( 'current_screen', $current_screen ); 
     526        } 
     527 
     528        /** 
     529         * Constructor 
     530         * 
     531         * @since 3.3.0 
     532         * @access private 
     533         */ 
     534        private function __construct() {} 
     535 
     536        /** 
     537         * Sets the old string-based contextual help for the screen. 
     538         * 
     539         * For backwards compatibility. 
     540         * 
     541         * @since 3.3.0 
     542         * 
     543         * @param WP_Screen $screen A screen object. 
     544         * @param string $help Help text. 
     545         */ 
    568546        static function add_old_compat_help( $screen, $help ) { 
    569                 self::$_old_compat_help[ $screen ] = $help;      
     547                self::$_old_compat_help[ $screen->id ] = $help; 
    570548        } 
    571549 
    572550        /** 
     
    579557         */ 
    580558        function set_parentage( $parent_file ) { 
    581559                $this->parent_file = $parent_file; 
    582                 $this->parent_base = preg_replace('/\?.*$/', '', $parent_file); 
     560                list( $this->parent_base ) = explode( '?', $parent_file ); 
    583561                $this->parent_base = str_replace('.php', '', $this->parent_base); 
    584562        } 
    585563 
     
    593571         * @param mixed $args Option-dependent arguments. 
    594572         */ 
    595573        public function add_option( $option, $args = array() ) { 
    596                 self::$_options[ $this->id ][ $option ] = $args; 
     574                $this->_options[ $option ] = $args; 
    597575        } 
    598576 
    599577        /** 
     
    601579         * 
    602580         * @since 3.3.0 
    603581         * 
    604          * @param string  
     582         * @param string 
    605583         */ 
    606584        public function get_option( $option, $key = false ) { 
    607                 if ( ! isset( self::$_options[ $this->id ][ $option ] ) ) 
     585                if ( ! isset( $this->_options[ $option ] ) ) 
    608586                        return null; 
    609587                if ( $key ) { 
    610                         if ( isset( self::$_options[ $this->id ][ $option ][ $key ] ) ) 
    611                                 return self::$_options[ $this->id ][ $option ][ $key ]; 
     588                        if ( isset( $this->_options[ $option ][ $key ] ) ) 
     589                                return $this->_options[ $option ][ $key ]; 
    612590                        return null; 
    613591                } 
    614                 return self::$_options[ $this->id ][ $option ]; 
     592                return $this->_options[ $option ]; 
    615593        } 
    616594 
    617595        /** 
     
    642620                if ( ! $args['id'] || ! $args['title'] ) 
    643621                        return; 
    644622 
    645                 self::$_help_tabs[ $this->id ][] = $args; 
     623                $this->_help_tabs[] = $args; 
    646624        } 
    647625 
    648626        /** 
     
    654632         * @param string $content Sidebar content in plain text or HTML. 
    655633         */ 
    656634        public function add_help_sidebar( $content ) { 
    657                 self::$_help_sidebar[ $this->id ] = $content; 
     635                $this->_help_sidebar = $content; 
    658636        } 
    659637 
    660638        /** 
     
    669647                // Call old contextual_help_list filter. 
    670648                self::$_old_compat_help = apply_filters( 'contextual_help_list', self::$_old_compat_help, $this ); 
    671649 
    672                 if ( isset( self::$_old_compat_help[ $this->id ] ) || empty(self::$_help_tabs[ $this->id ] ) ) { 
     650                if ( isset( self::$_old_compat_help[ $this->id ] ) || empty( $this->_help_tabs ) ) { 
    673651                        // Call old contextual_help filter. 
    674652                        if ( isset( self::$_old_compat_help[ $this->id ] ) ) 
    675653                                $contextual_help = apply_filters( 'contextual_help', self::$_old_compat_help[ $this->id ], $this->id, $this ); 
     
    695673                                'title'    => __('Screen Options'), 
    696674                                'callback' => array( $this, 'render_screen_options' ), 
    697675                        ) ); 
    698                         $_options_tab = array_pop( self::$_help_tabs[ $this->id ] ); 
    699                         array_unshift( self::$_help_tabs[ $this->id ], $_options_tab ); 
     676                        $_options_tab = array_pop( $this->_help_tabs ); 
     677                        array_unshift( $this->_help_tabs, $_options_tab ); 
    700678                } 
    701679 
    702680                // Time to render! 
     
    706684                        <div id="contextual-help-wrap" class="hidden"> 
    707685                                <div class="contextual-help-tabs"> 
    708686                                        <ul> 
    709                                         <?php foreach ( self::$_help_tabs[ $this->id ] as $i => $tab ): 
     687                                        <?php foreach ( $this->_help_tabs as $i => $tab ): 
    710688                                                $link_id  = "tab-link-{$tab['id']}"; 
    711689                                                $panel_id = "tab-panel-{$tab['id']}"; 
    712690                                                $classes  = ( $i == 0 ) ? 'active' : ''; 
     
    721699                                        </ul> 
    722700                                </div> 
    723701 
    724                                 <?php if ( ! empty( self::$_help_sidebar[ $this->id ] ) ) : ?> 
     702                                <?php if ( ! empty( $this->_help_sidebar ) ) : ?> 
    725703                                <div class="contextual-help-sidebar"> 
    726                                         <?php echo self::$_help_sidebar[ $this->id ]; ?> 
     704                                        <?php echo $this->_help_sidebar; ?> 
    727705                                </div> 
    728706                                <?php endif; ?> 
    729707 
    730708                                <div class="contextual-help-tabs-wrap"> 
    731                                         <?php foreach ( self::$_help_tabs[ $this->id ] as $i => $tab ): 
     709                                        <?php foreach ( $this->_help_tabs as $i => $tab ): 
    732710                                                $panel_id = "tab-panel-{$tab['id']}"; 
    733711                                                $classes  = ( $i == 0 ) ? 'active' : ''; 
    734712                                                $classes .= ' help-tab-content'; 
     
    752730        } 
    753731 
    754732        public function show_screen_options() { 
    755                 global $wp_meta_boxes, $wp_list_table; 
     733                global $wp_meta_boxes; 
    756734 
    757735                if ( is_bool( $this->_show_screen_options ) ) 
    758736                        return $this->_show_screen_options; 
     
    764742                        $show_screen = true; 
    765743 
    766744                // Check if there are per-page options. 
    767                 $show_screen = $show_screen || $this->get_option('per_page'); 
     745                if ( $this->get_option( 'per_page' ) ) 
     746                        $show_screen = true; 
    768747 
    769748                $this->_screen_settings = apply_filters( 'screen_settings', '', $this ); 
    770749 
    771750                switch ( $this->id ) { 
    772751                        case 'widgets': 
    773752                                $this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n"; 
    774                                 $show_screen = true; 
    775753                                break; 
    776754                } 
    777755 
    778                 if ( ! empty( $this->_screen_settings ) ) 
     756                if ( $this->_screen_settings || $this->_options ) 
    779757                        $show_screen = true; 
    780758 
    781                 if ( ! empty( self::$_options[ $this->id ] ) ) 
    782                         $show_screen = true; 
    783  
    784759                $this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this ); 
    785760                return $this->_show_screen_options; 
    786761        } 
     
    791766         * @since 3.3.0 
    792767         */ 
    793768        public function render_screen_options() { 
    794                 global $wp_meta_boxes, $wp_list_table; 
     769                global $wp_meta_boxes; 
    795770 
    796771                $columns = get_column_headers( $this ); 
    797772                $hidden  = get_hidden_columns( $this ); 
  • wp-admin/post.php

     
    1616 
    1717wp_reset_vars(array('action', 'safe_mode', 'withcomments', 'posts', 'content', 'edited_post_title', 'comment_error', 'profile', 'trackback_url', 'excerpt', 'showcomments', 'commentstart', 'commentend', 'commentorder')); 
    1818 
    19 if ( isset($_GET['post']) ) 
     19if ( isset( $_GET['post'] ) ) 
    2020        $post_id = (int) $_GET['post']; 
    21 elseif ( isset($_POST['post_ID']) ) 
     21elseif ( isset( $_POST['post_ID'] ) ) 
    2222        $post_id = (int) $_POST['post_ID']; 
    2323else 
    2424        $post_id = 0; 
     25 
    2526$post_ID = $post_id; 
    26 $post = null; 
    27 $post_type_object = null; 
    28 $post_type = null; 
    29 if ( $post_id ) { 
    30         $post = get_post($post_id); 
    31         if ( $post ) { 
    32                 $post_type_object = get_post_type_object($post->post_type); 
    33                 if ( $post_type_object ) { 
    34                         $post_type = $post->post_type; 
    35                         $current_screen->post_type = $post->post_type; 
    36                         $current_screen->id = $current_screen->post_type; 
    37                 } 
    38         } 
    39 } elseif ( isset($_POST['post_type']) ) { 
    40         $post_type_object = get_post_type_object($_POST['post_type']); 
    41         if ( $post_type_object ) { 
    42                 $post_type = $post_type_object->name; 
    43                 $current_screen->post_type = $post_type; 
    44                 $current_screen->id = $current_screen->post_type; 
    45         } 
     27$post = $post_type = $post_type_object = null; 
     28 
     29if ( $post_id ) 
     30        $post = get_post( $post_id ); 
     31 
     32if ( $post ) { 
     33        $post_type = $post->post_type; 
     34        $post_type_object = get_post_type_object( $post_type ); 
    4635} 
    4736 
    4837/**