set_screen_options
Saves option for number of rows when listing posts, pages, comments, etc.
Description
set_screen_options();
Usage
if ( !function_exists( 'set_screen_options' ) ) { require_once ABSPATH . '/wp-admin/includes/misc.php'; } // NOTICE! Understand what this does before running. $result = set_screen_options();
Defined (1)
The function is defined in the following location(s).
- /wp-admin/includes/misc.php
- function set_screen_options() {
- if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) {
- check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' );
- if ( !$user = wp_get_current_user() )
- return;
- $option = $_POST['wp_screen_options']['option'];
- $value = $_POST['wp_screen_options']['value'];
- if ( $option != sanitize_key( $option ) )
- return;
- $map_option = $option;
- $type = str_replace('edit_', '', $map_option);
- $type = str_replace('_per_page', '', $type);
- if ( in_array( $type, get_taxonomies() ) )
- $map_option = 'edit_tags_per_page';
- elseif ( in_array( $type, get_post_types() ) )
- $map_option = 'edit_per_page';
- else
- $option = str_replace('-', '_', $option);
- switch ( $map_option ) {
- case 'edit_per_page':
- case 'users_per_page':
- case 'edit_comments_per_page':
- case 'upload_per_page':
- case 'edit_tags_per_page':
- case 'plugins_per_page':
- // Network admin
- case 'sites_network_per_page':
- case 'users_network_per_page':
- case 'site_users_network_per_page':
- case 'plugins_network_per_page':
- case 'themes_network_per_page':
- case 'site_themes_network_per_page':
- $value = (int) $value;
- if ( $value < 1 || $value > 999 )
- return;
- break;
- default:
- /**
- * Filters a screen option value before it is set.
- *
- * The filter can also be used to modify non-standard [items]_per_page
- * settings. See the parent function for a full list of standard options.
- *
- * Returning false to the filter will skip saving the current option.
- *
- * @since 2.8.0
- *
- * @see set_screen_options()
- *
- * @param bool|int $value Screen option value. Default false to skip.
- * @param string $option The option name.
- * @param int $value The number of rows to use.
- */
- $value = apply_filters( 'set-screen-option', false, $option, $value );
- if ( false === $value )
- return;
- break;
- }
- update_user_meta($user->ID, $option, $value);
- $url = remove_query_arg( array( 'pagenum', 'apage', 'paged' ), wp_get_referer() );
- if ( isset( $_POST['mode'] ) ) {
- $url = add_query_arg( array( 'mode' => $_POST['mode'] ), $url );
- }
- wp_safe_redirect( $url );
- exit;
- }
- }