3 * WordPress Administration Screen API.
6 * @subpackage Administration
10 * Get the column headers for a screen
14 * @staticvar array $column_headers
16 * @param string|WP_Screen $screen The screen you want the headers for
17 * @return array Containing the headers in the format id => UI String
19 function get_column_headers( $screen ) {
20 if ( is_string( $screen ) )
21 $screen = convert_to_screen( $screen );
23 static $column_headers = array();
25 if ( ! isset( $column_headers[ $screen->id ] ) ) {
28 * Filter the column headers for a list table on a specific screen.
30 * The dynamic portion of the hook name, `$screen->id`, refers to the
31 * ID of a specific screen. For example, the screen ID for the Posts
32 * list table is edit-post, so the filter for that screen would be
33 * manage_edit-post_columns.
37 * @param array $columns An array of column headers. Default empty.
39 $column_headers[ $screen->id ] = apply_filters( "manage_{$screen->id}_columns", array() );
42 return $column_headers[ $screen->id ];
46 * Get a list of hidden columns.
50 * @param string|WP_Screen $screen The screen you want the hidden columns for
53 function get_hidden_columns( $screen ) {
54 if ( is_string( $screen ) ) {
55 $screen = convert_to_screen( $screen );
58 $hidden = get_user_option( 'manage' . $screen->id . 'columnshidden' );
60 $use_defaults = ! is_array( $hidden );
62 if ( $use_defaults ) {
66 * Filter the default list of hidden columns.
70 * @param array $hidden An array of columns hidden by default.
71 * @param WP_Screen $screen WP_Screen object of the current screen.
73 $hidden = apply_filters( 'default_hidden_columns', $hidden, $screen );
77 * Filter the list of hidden columns.
80 * @since 4.4.1 Added the `use_defaults` parameter.
82 * @param array $hidden An array of hidden columns.
83 * @param WP_Screen $screen WP_Screen object of the current screen.
84 * @param bool $use_defaults Whether to show the default columns.
86 return apply_filters( 'hidden_columns', $hidden, $screen, $use_defaults );
90 * Prints the meta box preferences for screen meta.
94 * @global array $wp_meta_boxes
96 * @param WP_Screen $screen
98 function meta_box_prefs( $screen ) {
99 global $wp_meta_boxes;
101 if ( is_string( $screen ) )
102 $screen = convert_to_screen( $screen );
104 if ( empty($wp_meta_boxes[$screen->id]) )
107 $hidden = get_hidden_meta_boxes($screen);
109 foreach ( array_keys( $wp_meta_boxes[ $screen->id ] ) as $context ) {
110 foreach ( array( 'high', 'core', 'default', 'low' ) as $priority ) {
111 if ( ! isset( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] ) ) {
114 foreach ( $wp_meta_boxes[ $screen->id ][ $context ][ $priority ] as $box ) {
115 if ( false == $box || ! $box['title'] )
117 // Submit box cannot be hidden
118 if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
120 $box_id = $box['id'];
121 echo '<label for="' . $box_id . '-hide">';
122 echo '<input class="hide-postbox-tog" name="' . $box_id . '-hide" type="checkbox" id="' . $box_id . '-hide" value="' . $box_id . '"' . (! in_array($box_id, $hidden) ? ' checked="checked"' : '') . ' />';
123 echo "{$box['title']}</label>\n";
130 * Get Hidden Meta Boxes
134 * @param string|WP_Screen $screen Screen identifier
135 * @return array Hidden Meta Boxes
137 function get_hidden_meta_boxes( $screen ) {
138 if ( is_string( $screen ) )
139 $screen = convert_to_screen( $screen );
141 $hidden = get_user_option( "metaboxhidden_{$screen->id}" );
143 $use_defaults = ! is_array( $hidden );
145 // Hide slug boxes by default
146 if ( $use_defaults ) {
148 if ( 'post' == $screen->base ) {
149 if ( 'post' == $screen->post_type || 'page' == $screen->post_type || 'attachment' == $screen->post_type )
150 $hidden = array('slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv');
152 $hidden = array( 'slugdiv' );
156 * Filter the default list of hidden meta boxes.
160 * @param array $hidden An array of meta boxes hidden by default.
161 * @param WP_Screen $screen WP_Screen object of the current screen.
163 $hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
167 * Filter the list of hidden meta boxes.
171 * @param array $hidden An array of hidden meta boxes.
172 * @param WP_Screen $screen WP_Screen object of the current screen.
173 * @param bool $use_defaults Whether to show the default meta boxes.
176 return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
180 * Register and configure an admin screen option
184 * @param string $option An option name.
185 * @param mixed $args Option-dependent arguments.
187 function add_screen_option( $option, $args = array() ) {
188 $current_screen = get_current_screen();
190 if ( ! $current_screen )
193 $current_screen->add_option( $option, $args );
197 * Get the current screen object
201 * @global WP_Screen $current_screen
203 * @return WP_Screen Current screen object
205 function get_current_screen() {
206 global $current_screen;
208 if ( ! isset( $current_screen ) )
211 return $current_screen;
215 * Set the current screen object
219 * @param mixed $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen,
220 * or an existing screen object.
222 function set_current_screen( $hook_name = '' ) {
223 WP_Screen::get( $hook_name )->set_current_screen();