Title: WP_Screen::render_per_page_options
Published: April 25, 2014
Last modified: February 24, 2026

---

# WP_Screen::render_per_page_options()

## In this article

 * [Source](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#wp--skip-link--target)

Renders the items per page option.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#source)󠁿

    ```php
    public function render_per_page_options() {
    	if ( null === $this->get_option( 'per_page' ) ) {
    		return;
    	}

    	$per_page_label = $this->get_option( 'per_page', 'label' );
    	if ( null === $per_page_label ) {
    		$per_page_label = __( 'Number of items per page:' );
    	}

    	$option = $this->get_option( 'per_page', 'option' );
    	if ( ! $option ) {
    		$option = str_replace( '-', '_', "{$this->id}_per_page" );
    	}

    	$per_page = (int) get_user_option( $option );
    	if ( empty( $per_page ) || $per_page < 1 ) {
    		$per_page = $this->get_option( 'per_page', 'default' );
    		if ( ! $per_page ) {
    			$per_page = 20;
    		}
    	}

    	if ( 'edit_comments_per_page' === $option ) {
    		$comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all';

    		/** This filter is documented in wp-admin/includes/class-wp-comments-list-table.php */
    		$per_page = apply_filters( 'comments_per_page', $per_page, $comment_status );
    	} elseif ( 'categories_per_page' === $option ) {
    		/** This filter is documented in wp-admin/includes/class-wp-terms-list-table.php */
    		$per_page = apply_filters( 'edit_categories_per_page', $per_page );
    	} else {
    		/** This filter is documented in wp-admin/includes/class-wp-list-table.php */
    		$per_page = apply_filters( "{$option}", $per_page );
    	}

    	// Back compat.
    	if ( isset( $this->post_type ) ) {
    		/** This filter is documented in wp-admin/includes/post.php */
    		$per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type );
    	}

    	// This needs a submit button.
    	add_filter( 'screen_options_show_submit', '__return_true' );

    	?>
    	<fieldset class="screen-options">
    	<legend><?php _e( 'Pagination' ); ?></legend>
    		<?php if ( $per_page_label ) : ?>
    			<label for="<?php echo esc_attr( $option ); ?>"><?php echo $per_page_label; ?></label>
    			<input type="number" step="1" min="1" max="999" class="screen-per-page" name="wp_screen_options[value]"
    				id="<?php echo esc_attr( $option ); ?>"
    				value="<?php echo esc_attr( $per_page ); ?>" />
    		<?php endif; ?>
    			<input type="hidden" name="wp_screen_options[option]" value="<?php echo esc_attr( $option ); ?>" />
    	</fieldset>
    	<?php
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/class-wp-screen.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-admin/includes/class-wp-screen.php#L1233)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-admin/includes/class-wp-screen.php#L1233-L1290)

## 󠀁[Hooks](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#hooks)󠁿

 [apply_filters( ‘comments_per_page’, int $comments_per_page, string $comment_status )](https://developer.wordpress.org/reference/hooks/comments_per_page/)

Filters the number of comments listed per page in the comments list table.

 [apply_filters( ‘edit_categories_per_page’, int $tags_per_page )](https://developer.wordpress.org/reference/hooks/edit_categories_per_page/)

Filters the number of terms displayed per page for the Categories list table.

 [apply_filters( ‘edit_posts_per_page’, int $posts_per_page, string $post_type )](https://developer.wordpress.org/reference/hooks/edit_posts_per_page/)

Filters the number of posts displayed per page when specifically listing “posts”.

 [apply_filters( “{$option}”, int $per_page )](https://developer.wordpress.org/reference/hooks/option/)

Filters the number of items to be displayed on each page of the list table.

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_Screen::get_option()](https://developer.wordpress.org/reference/classes/wp_screen/get_option/)`wp-admin/includes/class-wp-screen.php` |

Gets the arguments for an option for the screen.

  | 
| [get_user_option()](https://developer.wordpress.org/reference/functions/get_user_option/)`wp-includes/user.php` |

Retrieves user option that can be either per Site or per Network.

  | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  | 
| [_e()](https://developer.wordpress.org/reference/functions/_e/)`wp-includes/l10n.php` |

Displays translated text.

  | 
| [esc_attr()](https://developer.wordpress.org/reference/functions/esc_attr/)`wp-includes/formatting.php` |

Escaping for HTML attributes.

  | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  | 
| [add_filter()](https://developer.wordpress.org/reference/functions/add_filter/)`wp-includes/plugin.php` |

Adds a callback function to a filter hook.

  |

[Show 5 more](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#)

| Used by | Description | 
| [WP_Screen::render_screen_options()](https://developer.wordpress.org/reference/classes/wp_screen/render_screen_options/)`wp-admin/includes/class-wp-screen.php` |

Renders the screen options tab.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_screen/render_per_page_options/?output_format=md#changelog)󠁿

| Version | Description | 
| [3.3.0](https://developer.wordpress.org/reference/since/3.3.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_screen%2Frender_per_page_options%2F)
before being able to contribute a note or feedback.