post_type; } break; case 'edit-tags' : if ( null === $post_type && is_object_in_taxonomy( 'post', $taxonomy ? $taxonomy : 'post_tag' ) ) $post_type = 'post'; break; } } switch ( $base ) { case 'post' : if ( null === $post_type ) $post_type = 'post'; $id = $post_type; break; case 'edit' : if ( null === $post_type ) $post_type = 'post'; $id .= '-' . $post_type; break; case 'edit-tags' : if ( null === $taxonomy ) $taxonomy = 'post_tag'; // The edit-tags ID does not contain the post type. Look for it in the request. if ( null === $post_type ) { $post_type = 'post'; if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) ) $post_type = $_REQUEST['post_type']; } $id = 'edit-' . $taxonomy; break; } if ( 'network' == $in_admin ) { $id .= '-network'; $base .= '-network'; } elseif ( 'user' == $in_admin ) { $id .= '-user'; $base .= '-user'; } if ( isset( self::$_registry[ $id ] ) ) { $screen = self::$_registry[ $id ]; if ( $screen === get_current_screen() ) return $screen; } else { $screen = new WP_Screen(); $screen->id = $id; } $screen->base = $base; $screen->action = $action; $screen->post_type = (string) $post_type; $screen->taxonomy = (string) $taxonomy; $screen->is_user = ( 'user' == $in_admin ); $screen->is_network = ( 'network' == $in_admin ); $screen->in_admin = $in_admin; self::$_registry[ $id ] = $screen; return $screen; } /** * Makes the screen object the current screen. * * @see set_current_screen() * @since 3.3.0 */ function set_current_screen() { global $current_screen, $taxnow, $typenow; $current_screen = $this; $taxnow = $this->taxonomy; $typenow = $this->post_type; do_action( 'current_screen', $current_screen ); } /** * Constructor * * Would not need this in merged. keep private in actual core */ public function __construct( $wp_screen ) { $this->action = $wp_screen->action; $this->base = $wp_screen->base; $this->columns = $wp_screen->get_columns(); $this->id = $wp_screen->id; $this->in_admin = $wp_screen->in_admin(); $this->is_network = $wp_screen->is_network; $this->is_user = $wp_screen->is_user; $this->parent_base = $wp_screen->parent_base; $this->parent_file = $wp_screen->parent_file; $this->post_type = $wp_screen->post_type; $this->taxonomy = $wp_screen->taxonomy; $this->_help_tabs = $wp_screen->get_help_tabs(); $this->_help_sidebar = $wp_screen->get_help_sidebar(); //$this->_old_compat_help = $wp_screen->_old_compat_help; $this->_options = $wp_screen->get_options(); //$this->_registry = $wp_screen->_registry; //$this->_show_screen_options = $wp_screen->_show_screen_options; //$this->_screen_settings = $wp_screen->_screen_settings; } /** * Indicates whether the screen is in a particular admin * * @since 3.5.0 * * @param string $admin The admin to check against (network | user | site). * If empty any of the three admins will result in true. * @return boolean True if the screen is in the indicated admin, false otherwise. * */ public function in_admin( $admin = null ) { if ( empty( $admin ) ) return (bool) $this->in_admin; return ( $admin == $this->in_admin ); } /** * Sets the old string-based contextual help for the screen. * * For backwards compatibility. * * @since 3.3.0 * * @param WP_Screen $screen A screen object. * @param string $help Help text. */ static function add_old_compat_help( $screen, $help ) { self::$_old_compat_help[ $screen->id ] = $help; } /** * Set the parent information for the screen. * This is called in admin-header.php after the menu parent for the screen has been determined. * * @since 3.3.0 * * @param string $parent_file The parent file of the screen. Typically the $parent_file global. */ function set_parentage( $parent_file ) { $this->parent_file = $parent_file; list( $this->parent_base ) = explode( '?', $parent_file ); $this->parent_base = str_replace( '.php', '', $this->parent_base ); } /** * Adds an option for the screen. * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add screen options. * * @since 3.3.0 * * @param string $option Option ID * @param mixed $args Option-dependent arguments. */ public function add_option( $option, $args = array() ) { $this->_options[ $option ] = $args; } /** * Remove an option from the screen. * * @since 3.8.0 * * @param string $option Option ID. */ public function remove_option( $option ) { unset( $this->_options[ $option ] ); } /** * Remove all options from the screen. * * @since 3.8.0 */ public function remove_options() { $this->_options = array(); } /** * Get the options registered for the screen. * * @since 3.8.0 * * @return array Options with arguments. */ public function get_options() { return $this->_options; } /** * Gets the arguments for an option for the screen. * * @since 3.3.0 * * @param string $option Option ID. * @param mixed $key Optional. Specific array key for when the option is an array. */ public function get_option( $option, $key = false ) { if ( ! isset( $this->_options[ $option ] ) ) return null; if ( $key ) { if ( isset( $this->_options[ $option ][ $key ] ) ) return $this->_options[ $option ][ $key ]; return null; } return $this->_options[ $option ]; } /** * Gets the help tabs registered for the screen. * * @since 3.4.0 * * @return array Help tabs with arguments. */ public function get_help_tabs() { return $this->_help_tabs; } /** * Gets the arguments for a help tab. * * @since 3.4.0 * * @param string $id Help Tab ID. * @return array Help tab arguments. */ public function get_help_tab( $id ) { if ( ! isset( $this->_help_tabs[ $id ] ) ) return null; return $this->_help_tabs[ $id ]; } /** * Add a help tab to the contextual help for the screen. * Call this on the load-$pagenow hook for the relevant screen. * * @since 3.3.0 * * @param array $args * - string - title - Title for the tab. * - string - id - Tab ID. Must be HTML-safe. * - string - content - Help tab content in plain text or HTML. Optional. * - callback - callback - A callback to generate the tab content. Optional. * */ public function add_help_tab( $args ) { $defaults = array( 'title' => false, 'id' => false, 'content' => '', 'callback' => false, ); $args = wp_parse_args( $args, $defaults ); $args['id'] = sanitize_html_class( $args['id'] ); // Ensure we have an ID and title. if ( ! $args['id'] || ! $args['title'] ) return; // Allows for overriding an existing tab with that ID. $this->_help_tabs[ $args['id'] ] = $args; } /** * Removes a help tab from the contextual help for the screen. * * @since 3.3.0 * * @param string $id The help tab ID. */ public function remove_help_tab( $id ) { unset( $this->_help_tabs[ $id ] ); } /** * Removes all help tabs from the contextual help for the screen. * * @since 3.3.0 */ public function remove_help_tabs() { $this->_help_tabs = array(); } /** * Gets the content from a contextual help sidebar. * * @since 3.4.0 * * @return string Contents of the help sidebar. */ public function get_help_sidebar() { return $this->_help_sidebar; } /** * Add a sidebar to the contextual help for the screen. * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add a sidebar to the contextual help. * * @since 3.3.0 * * @param string $content Sidebar content in plain text or HTML. */ public function set_help_sidebar( $content ) { $this->_help_sidebar = $content; } /** * Gets the number of layout columns the user has selected. * * The layout_columns option controls the max number and default number of * columns. This method returns the number of columns within that range selected * by the user via Screen Options. If no selection has been made, the default * provisioned in layout_columns is returned. If the screen does not support * selecting the number of layout columns, 0 is returned. * * @since 3.4.0 * * @return int Number of columns to display. */ public function get_columns() { return $this->columns; } /** * Render the screen's help section. * * This will trigger the deprecated filters for backwards compatibility. * * @since 3.3.0 */ public function render_screen_meta() { // Temporary CSS inline ?> id ] ) ? self::$_old_compat_help[ $this->id ] : ''; $old_help = apply_filters( 'contextual_help', $old_help, $this->id, $this ); // Default help only if there is no old-style block of text and no new-style help tabs. if ( empty( $old_help ) && ! $this->get_help_tabs() ) { $default_help = apply_filters( 'default_contextual_help', '' ); if ( $default_help ) $old_help = '
' . $default_help . '
'; } if ( $old_help ) { $this->add_help_tab( array( 'id' => 'old-contextual-help', 'title' => __('Overview'), 'content' => $old_help, ) ); } // hide help by default based on user setting $user = wp_get_current_user(); $admin_help_overview = $user->has_prop( 'AH_O2_overview' ) ? $user->get( 'AH_O2_overview' ) : false; if( false == $admin_help_overview ) { $help_class = 'hidden'; } // return if no help or screen options if ( ! $this->get_help_tabs() && ! $this->show_screen_options() ) { return; } ?>' . __('Enable accessibility mode') . '' . __('Disable accessibility mode') . "
\n"; break; default: $this->_screen_settings = ''; break; } $this->_screen_settings = apply_filters( 'screen_settings', $this->_screen_settings, $this ); if ( $this->_screen_settings || $this->_options ) $show_screen = true; $this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this ); return $this->_show_screen_options; } /** * Render the screen options tab. * * @since 3.3.0 */ public function render_screen_options() { global $wp_meta_boxes, $wp_list_table; $columns = get_column_headers( $this ); $hidden = get_hidden_columns( $this ); $post = get_post(); ?> get_option('layout_columns') ) return; $screen_layout_columns = $this->get_columns(); $num = $this->get_option( 'layout_columns', 'max' ); ?>