245 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			245 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * WordPress Administration Screen API.
 | |
|  *
 | |
|  * @package WordPress
 | |
|  * @subpackage Administration
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Get the column headers for a screen
 | |
|  *
 | |
|  * @since 2.7.0
 | |
|  *
 | |
|  * @param string|WP_Screen $screen The screen you want the headers for
 | |
|  * @return string[] The column header labels keyed by column ID.
 | |
|  */
 | |
| function get_column_headers( $screen ) {
 | |
| 	static $column_headers = array();
 | |
| 
 | |
| 	if ( is_string( $screen ) ) {
 | |
| 		$screen = convert_to_screen( $screen );
 | |
| 	}
 | |
| 
 | |
| 	if ( ! isset( $column_headers[ $screen->id ] ) ) {
 | |
| 		/**
 | |
| 		 * Filters the column headers for a list table on a specific screen.
 | |
| 		 *
 | |
| 		 * The dynamic portion of the hook name, `$screen->id`, refers to the
 | |
| 		 * ID of a specific screen. For example, the screen ID for the Posts
 | |
| 		 * list table is edit-post, so the filter for that screen would be
 | |
| 		 * manage_edit-post_columns.
 | |
| 		 *
 | |
| 		 * @since 3.0.0
 | |
| 		 *
 | |
| 		 * @param string[] $columns The column header labels keyed by column ID.
 | |
| 		 */
 | |
| 		$column_headers[ $screen->id ] = apply_filters( "manage_{$screen->id}_columns", array() );
 | |
| 	}
 | |
| 
 | |
| 	return $column_headers[ $screen->id ];
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Get a list of hidden columns.
 | |
|  *
 | |
|  * @since 2.7.0
 | |
|  *
 | |
|  * @param string|WP_Screen $screen The screen you want the hidden columns for
 | |
|  * @return string[] Array of IDs of hidden columns.
 | |
|  */
 | |
| function get_hidden_columns( $screen ) {
 | |
| 	if ( is_string( $screen ) ) {
 | |
| 		$screen = convert_to_screen( $screen );
 | |
| 	}
 | |
| 
 | |
| 	$hidden = get_user_option( 'manage' . $screen->id . 'columnshidden' );
 | |
| 
 | |
| 	$use_defaults = ! is_array( $hidden );
 | |
| 
 | |
| 	if ( $use_defaults ) {
 | |
| 		$hidden = array();
 | |
| 
 | |
| 		/**
 | |
| 		 * Filters the default list of hidden columns.
 | |
| 		 *
 | |
| 		 * @since 4.4.0
 | |
| 		 *
 | |
| 		 * @param string[]  $hidden Array of IDs of columns hidden by default.
 | |
| 		 * @param WP_Screen $screen WP_Screen object of the current screen.
 | |
| 		 */
 | |
| 		$hidden = apply_filters( 'default_hidden_columns', $hidden, $screen );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Filters the list of hidden columns.
 | |
| 	 *
 | |
| 	 * @since 4.4.0
 | |
| 	 * @since 4.4.1 Added the `use_defaults` parameter.
 | |
| 	 *
 | |
| 	 * @param string[]  $hidden       Array of IDs of hidden columns.
 | |
| 	 * @param WP_Screen $screen       WP_Screen object of the current screen.
 | |
| 	 * @param bool      $use_defaults Whether to show the default columns.
 | |
| 	 */
 | |
| 	return apply_filters( 'hidden_columns', $hidden, $screen, $use_defaults );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Prints the meta box preferences for screen meta.
 | |
|  *
 | |
|  * @since 2.7.0
 | |
|  *
 | |
|  * @global array $wp_meta_boxes
 | |
|  *
 | |
|  * @param WP_Screen $screen
 | |
|  */
 | |
| function meta_box_prefs( $screen ) {
 | |
| 	global $wp_meta_boxes;
 | |
| 
 | |
| 	if ( is_string( $screen ) ) {
 | |
| 		$screen = convert_to_screen( $screen );
 | |
| 	}
 | |
| 
 | |
| 	if ( empty( $wp_meta_boxes[ $screen->id ] ) ) {
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	$hidden = get_hidden_meta_boxes( $screen );
 | |
| 
 | |
| 	foreach ( array_keys( $wp_meta_boxes[ $screen->id ] ) as $context ) {
 | |
| 		foreach ( array( 'high', 'core', 'default', 'low' ) as $priority ) {
 | |
| 			if ( ! isset( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] ) ) {
 | |
| 				continue;
 | |
| 			}
 | |
| 
 | |
| 			foreach ( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] as $box ) {
 | |
| 				if ( false === $box || ! $box['title'] ) {
 | |
| 					continue;
 | |
| 				}
 | |
| 
 | |
| 				// Submit box cannot be hidden.
 | |
| 				if ( 'submitdiv' === $box['id'] || 'linksubmitdiv' === $box['id'] ) {
 | |
| 					continue;
 | |
| 				}
 | |
| 
 | |
| 				$widget_title = $box['title'];
 | |
| 
 | |
| 				if ( is_array( $box['args'] ) && isset( $box['args']['__widget_basename'] ) ) {
 | |
| 					$widget_title = $box['args']['__widget_basename'];
 | |
| 				}
 | |
| 
 | |
| 				$is_hidden = in_array( $box['id'], $hidden, true );
 | |
| 
 | |
| 				printf(
 | |
| 					'<label for="%1$s-hide"><input class="hide-postbox-tog" name="%1$s-hide" type="checkbox" id="%1$s-hide" value="%1$s" %2$s />%3$s</label>',
 | |
| 					esc_attr( $box['id'] ),
 | |
| 					checked( $is_hidden, false, false ),
 | |
| 					$widget_title
 | |
| 				);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Gets an array of IDs of hidden meta boxes.
 | |
|  *
 | |
|  * @since 2.7.0
 | |
|  *
 | |
|  * @param string|WP_Screen $screen Screen identifier
 | |
|  * @return string[] IDs of hidden meta boxes.
 | |
|  */
 | |
| function get_hidden_meta_boxes( $screen ) {
 | |
| 	if ( is_string( $screen ) ) {
 | |
| 		$screen = convert_to_screen( $screen );
 | |
| 	}
 | |
| 
 | |
| 	$hidden = get_user_option( "metaboxhidden_{$screen->id}" );
 | |
| 
 | |
| 	$use_defaults = ! is_array( $hidden );
 | |
| 
 | |
| 	// Hide slug boxes by default.
 | |
| 	if ( $use_defaults ) {
 | |
| 		$hidden = array();
 | |
| 
 | |
| 		if ( 'post' === $screen->base ) {
 | |
| 			if ( in_array( $screen->post_type, array( 'post', 'page', 'attachment' ), true ) ) {
 | |
| 				$hidden = array( 'slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv' );
 | |
| 			} else {
 | |
| 				$hidden = array( 'slugdiv' );
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		/**
 | |
| 		 * Filters the default list of hidden meta boxes.
 | |
| 		 *
 | |
| 		 * @since 3.1.0
 | |
| 		 *
 | |
| 		 * @param string[]  $hidden An array of IDs of meta boxes hidden by default.
 | |
| 		 * @param WP_Screen $screen WP_Screen object of the current screen.
 | |
| 		 */
 | |
| 		$hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Filters the list of hidden meta boxes.
 | |
| 	 *
 | |
| 	 * @since 3.3.0
 | |
| 	 *
 | |
| 	 * @param string[]  $hidden       An array of IDs of hidden meta boxes.
 | |
| 	 * @param WP_Screen $screen       WP_Screen object of the current screen.
 | |
| 	 * @param bool      $use_defaults Whether to show the default meta boxes.
 | |
| 	 *                                Default true.
 | |
| 	 */
 | |
| 	return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Register and configure an admin screen option
 | |
|  *
 | |
|  * @since 3.1.0
 | |
|  *
 | |
|  * @param string $option An option name.
 | |
|  * @param mixed  $args   Option-dependent arguments.
 | |
|  */
 | |
| function add_screen_option( $option, $args = array() ) {
 | |
| 	$current_screen = get_current_screen();
 | |
| 
 | |
| 	if ( ! $current_screen ) {
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	$current_screen->add_option( $option, $args );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Get the current screen object
 | |
|  *
 | |
|  * @since 3.1.0
 | |
|  *
 | |
|  * @global WP_Screen $current_screen WordPress current screen object.
 | |
|  *
 | |
|  * @return WP_Screen|null Current screen object or null when screen not defined.
 | |
|  */
 | |
| function get_current_screen() {
 | |
| 	global $current_screen;
 | |
| 
 | |
| 	if ( ! isset( $current_screen ) ) {
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	return $current_screen;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Set the current screen object
 | |
|  *
 | |
|  * @since 3.0.0
 | |
|  *
 | |
|  * @param string|WP_Screen $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen,
 | |
|  *                                    or an existing screen object.
 | |
|  */
 | |
| function set_current_screen( $hook_name = '' ) {
 | |
| 	WP_Screen::get( $hook_name )->set_current_screen();
 | |
| }
 |