wp/wp-admin/includes/screen.php
changeset 16 a86126ab1dd4
parent 9 177826044cd9
child 18 be944660c56a
equal deleted inserted replaced
15:3d4e9c994f10 16:a86126ab1dd4
     9 /**
     9 /**
    10  * Get the column headers for a screen
    10  * Get the column headers for a screen
    11  *
    11  *
    12  * @since 2.7.0
    12  * @since 2.7.0
    13  *
    13  *
    14  * @staticvar array $column_headers
       
    15  *
       
    16  * @param string|WP_Screen $screen The screen you want the headers for
    14  * @param string|WP_Screen $screen The screen you want the headers for
    17  * @return array Containing the headers in the format id => UI String
    15  * @return string[] The column header labels keyed by column ID.
    18  */
    16  */
    19 function get_column_headers( $screen ) {
    17 function get_column_headers( $screen ) {
    20 	if ( is_string( $screen ) ) {
    18 	if ( is_string( $screen ) ) {
    21 		$screen = convert_to_screen( $screen );
    19 		$screen = convert_to_screen( $screen );
    22 	}
    20 	}
    23 
    21 
    24 	static $column_headers = array();
    22 	static $column_headers = array();
    25 
    23 
    26 	if ( ! isset( $column_headers[ $screen->id ] ) ) {
    24 	if ( ! isset( $column_headers[ $screen->id ] ) ) {
    27 
       
    28 		/**
    25 		/**
    29 		 * Filters the column headers for a list table on a specific screen.
    26 		 * Filters the column headers for a list table on a specific screen.
    30 		 *
    27 		 *
    31 		 * The dynamic portion of the hook name, `$screen->id`, refers to the
    28 		 * The dynamic portion of the hook name, `$screen->id`, refers to the
    32 		 * ID of a specific screen. For example, the screen ID for the Posts
    29 		 * ID of a specific screen. For example, the screen ID for the Posts
    33 		 * list table is edit-post, so the filter for that screen would be
    30 		 * list table is edit-post, so the filter for that screen would be
    34 		 * manage_edit-post_columns.
    31 		 * manage_edit-post_columns.
    35 		 *
    32 		 *
    36 		 * @since 3.0.0
    33 		 * @since 3.0.0
    37 		 *
    34 		 *
    38 		 * @param array $columns An array of column headers. Default empty.
    35 		 * @param string[] $columns The column header labels keyed by column ID.
    39 		 */
    36 		 */
    40 		$column_headers[ $screen->id ] = apply_filters( "manage_{$screen->id}_columns", array() );
    37 		$column_headers[ $screen->id ] = apply_filters( "manage_{$screen->id}_columns", array() );
    41 	}
    38 	}
    42 
    39 
    43 	return $column_headers[ $screen->id ];
    40 	return $column_headers[ $screen->id ];
    47  * Get a list of hidden columns.
    44  * Get a list of hidden columns.
    48  *
    45  *
    49  * @since 2.7.0
    46  * @since 2.7.0
    50  *
    47  *
    51  * @param string|WP_Screen $screen The screen you want the hidden columns for
    48  * @param string|WP_Screen $screen The screen you want the hidden columns for
    52  * @return array
    49  * @return string[] Array of IDs of hidden columns.
    53  */
    50  */
    54 function get_hidden_columns( $screen ) {
    51 function get_hidden_columns( $screen ) {
    55 	if ( is_string( $screen ) ) {
    52 	if ( is_string( $screen ) ) {
    56 		$screen = convert_to_screen( $screen );
    53 		$screen = convert_to_screen( $screen );
    57 	}
    54 	}
    66 		/**
    63 		/**
    67 		 * Filters the default list of hidden columns.
    64 		 * Filters the default list of hidden columns.
    68 		 *
    65 		 *
    69 		 * @since 4.4.0
    66 		 * @since 4.4.0
    70 		 *
    67 		 *
    71 		 * @param array     $hidden An array of columns hidden by default.
    68 		 * @param string[]  $hidden Array of IDs of columns hidden by default.
    72 		 * @param WP_Screen $screen WP_Screen object of the current screen.
    69 		 * @param WP_Screen $screen WP_Screen object of the current screen.
    73 		 */
    70 		 */
    74 		$hidden = apply_filters( 'default_hidden_columns', $hidden, $screen );
    71 		$hidden = apply_filters( 'default_hidden_columns', $hidden, $screen );
    75 	}
    72 	}
    76 
    73 
    78 	 * Filters the list of hidden columns.
    75 	 * Filters the list of hidden columns.
    79 	 *
    76 	 *
    80 	 * @since 4.4.0
    77 	 * @since 4.4.0
    81 	 * @since 4.4.1 Added the `use_defaults` parameter.
    78 	 * @since 4.4.1 Added the `use_defaults` parameter.
    82 	 *
    79 	 *
    83 	 * @param array     $hidden An array of hidden columns.
    80 	 * @param string[]  $hidden       Array of IDs of hidden columns.
    84 	 * @param WP_Screen $screen WP_Screen object of the current screen.
    81 	 * @param WP_Screen $screen       WP_Screen object of the current screen.
    85 	 * @param bool      $use_defaults Whether to show the default columns.
    82 	 * @param bool      $use_defaults Whether to show the default columns.
    86 	 */
    83 	 */
    87 	return apply_filters( 'hidden_columns', $hidden, $screen, $use_defaults );
    84 	return apply_filters( 'hidden_columns', $hidden, $screen, $use_defaults );
    88 }
    85 }
    89 
    86 
   116 			}
   113 			}
   117 			foreach ( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] as $box ) {
   114 			foreach ( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] as $box ) {
   118 				if ( false == $box || ! $box['title'] ) {
   115 				if ( false == $box || ! $box['title'] ) {
   119 					continue;
   116 					continue;
   120 				}
   117 				}
   121 				// Submit box cannot be hidden
   118 				// Submit box cannot be hidden.
   122 				if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] ) {
   119 				if ( 'submitdiv' === $box['id'] || 'linksubmitdiv' === $box['id'] ) {
   123 					continue;
   120 					continue;
   124 				}
   121 				}
   125 
   122 
   126 				$widget_title = $box['title'];
   123 				$widget_title = $box['title'];
   127 
   124 
   128 				if ( is_array( $box['args'] ) && isset( $box['args']['__widget_basename'] ) ) {
   125 				if ( is_array( $box['args'] ) && isset( $box['args']['__widget_basename'] ) ) {
   129 					$widget_title = $box['args']['__widget_basename'];
   126 					$widget_title = $box['args']['__widget_basename'];
   130 				}
   127 				}
   131 
   128 
       
   129 				$is_hidden = in_array( $box['id'], $hidden, true );
       
   130 
   132 				printf(
   131 				printf(
   133 					'<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>',
   132 					'<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>',
   134 					esc_attr( $box['id'] ),
   133 					esc_attr( $box['id'] ),
   135 					checked( in_array( $box['id'], $hidden ), false, false ),
   134 					checked( $is_hidden, false, false ),
   136 					$widget_title
   135 					$widget_title
   137 				);
   136 				);
   138 			}
   137 			}
   139 		}
   138 		}
   140 	}
   139 	}
   141 }
   140 }
   142 
   141 
   143 /**
   142 /**
   144  * Get Hidden Meta Boxes
   143  * Gets an array of IDs of hidden meta boxes.
   145  *
   144  *
   146  * @since 2.7.0
   145  * @since 2.7.0
   147  *
   146  *
   148  * @param string|WP_Screen $screen Screen identifier
   147  * @param string|WP_Screen $screen Screen identifier
   149  * @return array Hidden Meta Boxes
   148  * @return string[] IDs of hidden meta boxes.
   150  */
   149  */
   151 function get_hidden_meta_boxes( $screen ) {
   150 function get_hidden_meta_boxes( $screen ) {
   152 	if ( is_string( $screen ) ) {
   151 	if ( is_string( $screen ) ) {
   153 		$screen = convert_to_screen( $screen );
   152 		$screen = convert_to_screen( $screen );
   154 	}
   153 	}
   155 
   154 
   156 	$hidden = get_user_option( "metaboxhidden_{$screen->id}" );
   155 	$hidden = get_user_option( "metaboxhidden_{$screen->id}" );
   157 
   156 
   158 	$use_defaults = ! is_array( $hidden );
   157 	$use_defaults = ! is_array( $hidden );
   159 
   158 
   160 	// Hide slug boxes by default
   159 	// Hide slug boxes by default.
   161 	if ( $use_defaults ) {
   160 	if ( $use_defaults ) {
   162 		$hidden = array();
   161 		$hidden = array();
   163 		if ( 'post' == $screen->base ) {
   162 		if ( 'post' === $screen->base ) {
   164 			if ( 'post' == $screen->post_type || 'page' == $screen->post_type || 'attachment' == $screen->post_type ) {
   163 			if ( in_array( $screen->post_type, array( 'post', 'page', 'attachment' ), true ) ) {
   165 				$hidden = array( 'slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv' );
   164 				$hidden = array( 'slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv' );
   166 			} else {
   165 			} else {
   167 				$hidden = array( 'slugdiv' );
   166 				$hidden = array( 'slugdiv' );
   168 			}
   167 			}
   169 		}
   168 		}
   171 		/**
   170 		/**
   172 		 * Filters the default list of hidden meta boxes.
   171 		 * Filters the default list of hidden meta boxes.
   173 		 *
   172 		 *
   174 		 * @since 3.1.0
   173 		 * @since 3.1.0
   175 		 *
   174 		 *
   176 		 * @param array     $hidden An array of meta boxes hidden by default.
   175 		 * @param string[]  $hidden An array of IDs of meta boxes hidden by default.
   177 		 * @param WP_Screen $screen WP_Screen object of the current screen.
   176 		 * @param WP_Screen $screen WP_Screen object of the current screen.
   178 		 */
   177 		 */
   179 		$hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
   178 		$hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
   180 	}
   179 	}
   181 
   180 
   182 	/**
   181 	/**
   183 	 * Filters the list of hidden meta boxes.
   182 	 * Filters the list of hidden meta boxes.
   184 	 *
   183 	 *
   185 	 * @since 3.3.0
   184 	 * @since 3.3.0
   186 	 *
   185 	 *
   187 	 * @param array     $hidden       An array of hidden meta boxes.
   186 	 * @param string[]  $hidden       An array of IDs of hidden meta boxes.
   188 	 * @param WP_Screen $screen       WP_Screen object of the current screen.
   187 	 * @param WP_Screen $screen       WP_Screen object of the current screen.
   189 	 * @param bool      $use_defaults Whether to show the default meta boxes.
   188 	 * @param bool      $use_defaults Whether to show the default meta boxes.
   190 	 *                                Default true.
   189 	 *                                Default true.
   191 	 */
   190 	 */
   192 	return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
   191 	return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
   196  * Register and configure an admin screen option
   195  * Register and configure an admin screen option
   197  *
   196  *
   198  * @since 3.1.0
   197  * @since 3.1.0
   199  *
   198  *
   200  * @param string $option An option name.
   199  * @param string $option An option name.
   201  * @param mixed $args Option-dependent arguments.
   200  * @param mixed  $args   Option-dependent arguments.
   202  */
   201  */
   203 function add_screen_option( $option, $args = array() ) {
   202 function add_screen_option( $option, $args = array() ) {
   204 	$current_screen = get_current_screen();
   203 	$current_screen = get_current_screen();
   205 
   204 
   206 	if ( ! $current_screen ) {
   205 	if ( ! $current_screen ) {
   213 /**
   212 /**
   214  * Get the current screen object
   213  * Get the current screen object
   215  *
   214  *
   216  * @since 3.1.0
   215  * @since 3.1.0
   217  *
   216  *
   218  * @global WP_Screen $current_screen
   217  * @global WP_Screen $current_screen WordPress current screen object.
   219  *
   218  *
   220  * @return WP_Screen|null Current screen object or null when screen not defined.
   219  * @return WP_Screen|null Current screen object or null when screen not defined.
   221  */
   220  */
   222 function get_current_screen() {
   221 function get_current_screen() {
   223 	global $current_screen;
   222 	global $current_screen;
   232 /**
   231 /**
   233  * Set the current screen object
   232  * Set the current screen object
   234  *
   233  *
   235  * @since 3.0.0
   234  * @since 3.0.0
   236  *
   235  *
   237  * @param mixed $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen,
   236  * @param string|WP_Screen $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen,
   238  *                         or an existing screen object.
   237  *                                    or an existing screen object.
   239  */
   238  */
   240 function set_current_screen( $hook_name = '' ) {
   239 function set_current_screen( $hook_name = '' ) {
   241 	WP_Screen::get( $hook_name )->set_current_screen();
   240 	WP_Screen::get( $hook_name )->set_current_screen();
   242 }
   241 }