You can customize WordPress admin lists without a plugin: use Screen Options for personal display preferences, and PHP hooks when you need code-defined columns or filter controls. A custom dropdown is only the interface; to narrow the list, your implementation must also apply the submitted value to the admin query.
Choose the right approach for the change
Start by deciding whether you want to change what you see, what every user sees, or which records appear. Those are separate jobs in WordPress.
| Goal | Mechanism | Scope and effect |
|---|---|---|
| Hide or show an existing column, or change items per page | Screen Options | Display preference for an individual user on a supported screen; does not change which records match. |
| Add or remove a column on a post list | manage_posts_columns, manage_pages_columns, or a post-type-specific columns filter |
Code-defined column headings for the relevant post list. |
| Put a custom dropdown or other control above the list | restrict_manage_posts |
Adds interface controls to Posts and Pages list-table navigation; does not itself filter results. |
| Customize columns for one admin list-table screen | manage_{$screen->id}_columns |
Targets a particular screen ID rather than a broader post-type list. |
| Make a column sortable | That list table’s sortable-column extension point | Sorting is separate from defining or displaying a column. |
Use Screen Options for personal display changes
On supported administration screens, open Screen Options to choose which available fields or modules appear. On the Posts screen, WordPress documents options for showing or hiding columns and setting the number of posts per page; the Pages screen offers the same kind of controls for pages. See the official Posts Screen, Pages Screen, and Administration Screens documentation.
This is the simplest option when you only want to adjust your own view. Screen Options do not add a new column, create a custom filter, or change the query that determines which records WordPress returns.
Recommended Free Tools
#1 Best Overall
Add or remove columns with post-list hooks
The manage_posts_columns filter changes the column-heading array for the general Posts list. For Pages, use manage_pages_columns; for a custom post type, core provides the dynamic manage_{$post_type}_posts_columns filter. The appropriate hook depends on the list you are customizing, so avoid using a broad hook when the change is meant for only one type.
For example, a custom post type with the slug book can add an ISBN heading like this:
Rank #2
add_filter( 'manage_book_posts_columns', function ( $columns ) {
$columns['isbn'] = __( 'ISBN', 'textdomain' );
return $columns;
} );
This defines a column heading; displaying a value in each row is a separate part of the implementation. Check the hook reference for the WordPress version you support, because hook behavior and parameters can vary by version.
Add a filter control above Posts or Pages
The restrict_manage_posts action fires before the Filter button on the Posts and Pages list tables. It receives context including the post type and whether the controls are being rendered above or below the table. Use it to render a taxonomy dropdown, author selector, status choice, or custom meta-value control.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Rank #3
A complete filter needs both a control and query handling:
- Render a named control. Output the dropdown or other input from
restrict_manage_posts, using a name your query-handling code can recognize. - Read and validate the submitted value. Treat request data as untrusted. Sanitize it and verify that the current user is allowed to perform the relevant administration action.
- Apply the value to the admin query. Add the matching taxonomy, metadata, or date constraint to the list query. The control hook only supplies an insertion point for the interface; it does not filter records automatically.
- Keep the behavior scoped. Check the relevant post type and screen context so the control and query modification do not affect unrelated admin lists.
WordPress core invokes this action while building the list-table navigation and renders the Filter button when extra navigation markup is present. The hook reference describes its placement and parameters; it is not, by itself, a complete implementation for validating values or modifying a query.
Rank #4
Target one specific list-table screen
When a post-type-level change would affect too many screens—or when you are working with a plugin’s own list table—use the dynamic manage_{$screen->id}_columns filter. Core’s Recommended: PC Feels Slow? A Free Scan Shows What's Dragging Windows Down →Recommended: Crashes or Glitches? A Free Driver Scan Usually Finds the Culprit →Recommended: Fix Windows Errors and Clear Junk Files in Minutes - Free Scan →

