Opens in a new tab
  1. Home
  2. Guides
  3. Backend
Backend guide

WordPress Screen Options vs. Custom Columns

Learn the difference between WordPress Screen Options and custom admin columns, including visibility, user preferences, custom data, sorting, performance and list-table workflows.

  • Updated September 15, 2026
  • 21 min read
  • WordPress guide

WordPress Screen Options vs. Custom Columns can be confusing because both features affect what appears in WordPress administration tables, but they operate at different levels.

Screen Options primarily let users control the presentation of an existing admin screen.

Custom columns change the information that the screen itself is capable of displaying.

The distinction can be summarized as:

Screen Options
→ control visibility and screen preferences

Custom Columns
→ define additional information in the table

If a Posts screen already contains an Author column, Screen Options can allow a user to hide or show it.

If you want the Posts screen to display a new SEO Score, Product Code, Reading Time or Client column, that information first needs to exist as a column. Only then can WordPress expose that column as something the user may show or hide.

The two systems therefore complement each other rather than compete with each other.

This guide explains how WordPress Screen Options interact with admin list-table columns, how custom columns are registered and populated, where user preferences are stored conceptually, how sorting differs from visibility, and when a site should rely on native Screen Options versus defining a standardized admin-column configuration.

What WordPress Screen Options actually control

The Screen Options tab appears near the top-right corner of many WordPress administration screens.

Its contents depend on the current screen.

On a content list such as Posts → All Posts, Screen Options may allow a user to control:

  • which columns are visible;
  • how many items appear per page;
  • other screen-specific preferences exposed by WordPress or plugins.

On other administration screens, the available controls may be different.

That is why Screen Options should be understood as a screen-specific preference system rather than a single global WordPress setting.

For a broader explanation of the feature, see WordPress Screen Options, Explained.

Column visibility is one of the most important Screen Options features

Consider a Posts list table containing:

  • Title;
  • Author;
  • Categories;
  • Tags;
  • Comments;
  • Date.

A particular editor may not need to see Tags.

They can open Screen Options and disable that column.

The important detail is that the Tags column still exists.

Screen Options did not remove the column from WordPress’s table definition. It changed whether that particular user sees it.

Conceptually:

Registered columns:
Title
Author
Categories
Tags
Comments
Date

User preference:
Tags = hidden

Rendered table:
Title
Author
Categories
Comments
Date

Another user on the same website can still choose to display Tags.

Screen Options are generally personal preferences

WordPress saves many administration-screen preferences against the current user rather than treating them as one universal site configuration.

This is useful because different roles may have different workflows.

An administrator may want a dense table containing technical information, while an editor may prefer a smaller set of editorial columns.

That flexibility is valuable, but it also explains why Screen Options alone are not always sufficient when an organization needs every user to work from a predictable administrative interface.

For that broader problem, see Standardizing the WordPress Admin for Teams.

What custom WordPress columns actually do

A custom column changes the structure of an administration list table by adding information that WordPress would not otherwise display there.

Suppose a website has a custom post type named book.

By default, its administration screen might show information such as:

  • Title;
  • Author;
  • Date.

But the content model may also contain:

  • ISBN;
  • Publisher;
  • Publication Year;
  • Genre.

Without custom columns, editors may need to open each Book individually to inspect those values.

A better list screen could become:

Title | ISBN | Publisher | Year | Genre | Date

That is not merely a visibility preference.

The table has gained new information.

For the broader architecture behind these screens, see WordPress Admin List Tables, Explained.

WordPress provides dedicated column hooks

For Posts, WordPress exposes the manage_posts_columns filter.

For a specific post type, developers can use the dynamic pattern:

manage_{$post_type}_posts_columns

For example, a book post type can use:

manage_book_posts_columns

The official WordPress Developer Reference for post-type columns documents this filter.

A basic implementation might look like:

function project_book_columns( $columns ) {

    $columns['isbn'] = __( 'ISBN', 'project' );
    $columns['publisher'] = __( 'Publisher', 'project' );

    return $columns;
}

add_filter(
    'manage_book_posts_columns',
    'project_book_columns'
);

The table now knows that those columns exist.

But registering a heading is only the first half of the job.

The column also needs a value

WordPress provides a corresponding action for rendering custom post-type column content:

manage_{$post_type}_posts_custom_column

The official WordPress documentation for custom column output describes the action and its parameters.

For example:

function project_book_column_content(
    $column,
    $post_id
) {

    if ( 'isbn' === $column ) {

        $isbn = get_post_meta(
            $post_id,
            '_isbn',
            true
        );

        echo esc_html( $isbn );
    }

    if ( 'publisher' === $column ) {

        $publisher = get_post_meta(
            $post_id,
            '_publisher',
            true
        );

        echo esc_html( $publisher );
    }
}

add_action(
    'manage_book_posts_custom_column',
    'project_book_column_content',
    10,
    2
);

The resulting table can now display actual metadata for each Book.

How Screen Options and custom columns work together

This is where the distinction becomes especially useful.

A properly registered custom column can participate in WordPress’s normal column-visibility system.

In other words:

Developer registers column
        ↓
WordPress knows column exists
        ↓
Column appears in list table
        ↓
Screen Options can expose its visibility
        ↓
User can show or hide it

The official documentation for manage_posts_custom_column explicitly notes that custom columns added through the corresponding column filters automatically appear in Screen Options.

This means developers generally do not need to build a second visibility interface simply to let users hide a correctly registered list-table column.

Screen Options do not create the custom data

If the table does not contain an ISBN column, opening Screen Options will not somehow discover an ISBN custom field and offer it automatically.

Screen Options work with the columns that the screen has registered.

The sequence matters:

Custom field exists
≠
admin column exists

Admin column registered
→
column can be displayed

Column registered
+
Screen Options
→
user can control visibility

This distinction becomes important on sites with large amounts of custom metadata.

WordPress does not need to turn every custom field into an administration column.

Only information that is useful during list-level management should normally be promoted into the table.

Hiding a column is not the same as removing it

If an editor hides Publisher through Screen Options, the column definition still exists.

If a developer removes Publisher from the registered column array, users can no longer enable it through the normal column visibility control because the screen no longer exposes that column.

That gives developers and users different levels of control:

Developer:
What columns are available?

User:
Which available columns do I want visible?

Screen Options are about preferences; custom columns are about information architecture

This is the most useful way to decide which mechanism a project needs.

Use Screen Options when the information already exists

If WordPress or a plugin already provides a useful column and the only requirement is:

I do not want to see this column

Screen Options are usually enough.

Examples include hiding:

  • Author;
  • Categories;
  • Tags;
  • Comments;
  • Date;
  • a plugin-provided SEO column.

No custom PHP is necessary simply because one user prefers a cleaner table.

Use a custom column when important information is missing

If the requirement is:

I need to see information
that this table does not currently show

you need a column implementation.

Useful examples might include:

  • SKU;
  • product supplier;
  • event date;
  • assigned account manager;
  • reading time;
  • featured status;
  • internal content ID;
  • custom taxonomy;
  • workflow status;
  • last synchronization date.

TheOneWP provides Custom Content Columns for configuring useful information in supported WordPress administration lists without requiring every column to be implemented manually.

Use both when the information is useful but not universally required

This is often the ideal combination.

For example, an editorial site may register:

Title
Author
Section
Reading Time
SEO Status
Last Updated
Date

An SEO specialist might display all of them.

A writer may only need:

Title
Author
Section
Date

The data architecture remains consistent while individual users retain control over the amount of information shown.

Column visibility, sorting and pagination are separate systems

A frequent source of confusion is treating every list-table feature as one configuration.

They are related, but separate.

A column can be:

  • registered;
  • visible or hidden;
  • populated with data;
  • sortable or not sortable.

Those are distinct decisions.

A visible column is not automatically sortable

Suppose you add a Publication Year column.

Displaying:

2022
2024
2026

does not automatically mean clicking the column heading will reorder the posts.

WordPress exposes a screen-specific sortable-column filter:

manage_{$screen_id}_sortable_columns

The official sortable-columns documentation explains this mechanism.

For the book post type, the screen ID would typically be:

edit-book

and a sortable column can be registered accordingly.

However, declaring a column sortable only tells the list table that sorting is available.

The underlying WordPress query must also understand how to order the records.

For the deeper relationship between table headings and query ordering, see WordPress List-Table Sorting, Explained.

Items per page are another Screen Option

Many list screens also let the user decide how many records appear per page.

This changes:

20 posts per page
→
50 posts per page

but it does not alter which columns exist.

WordPress provides the add_screen_option() API for registering supported administration screen options such as per-page and layout controls.

WordPress then saves supported screen-option values through its user-preference system.

Again, this is different from the list-table column API.

Custom columns can improve workflow, but they can also hurt performance

Adding a column looks inexpensive because the final result may contain only a short value.

The expensive part can be obtaining that value for every row.

Suppose the screen shows 100 posts and a custom column performs an additional database query for every post.

You may have created:

1 list query
+
100 additional queries
=
avoidable admin overhead

Add several poorly implemented columns and the administration screen can become noticeably slower.

Avoid unnecessary per-row work

Custom column callbacks run repeatedly as WordPress renders the table.

Avoid doing expensive work inside each callback such as:

  • remote API requests;
  • large uncached queries;
  • recalculating complex statistics;
  • loading large object collections;
  • performing the same lookup repeatedly.

If information is expensive to calculate but changes infrequently, consider whether it should be calculated earlier and stored in an appropriate form.

Hidden does not necessarily mean free

Do not design expensive column logic under the assumption that hiding a column through CSS will solve its performance cost.

CSS hiding only affects presentation after the server has generated the response.

The better approach is to integrate with WordPress’s actual column visibility architecture and avoid unnecessary processing where practical.

More columns can also reduce usability

A technically impressive table containing fifteen columns may be less useful than a carefully designed table containing six.

Too many columns create:

  • narrow title areas;
  • wrapped values;
  • horizontal pressure;
  • poor readability;
  • awkward responsive behavior;
  • more decisions for editors.

Custom columns should expose high-value information, not every value stored in the database.

Think about roles, teams and standardized admin interfaces

Screen Options are convenient precisely because users can personalize their workspace.

That can become a disadvantage when a team requires a predictable interface.

Imagine support documentation that says:

Check the "Approval Status" column.

One employee sees it.

Another previously hid it through Screen Options and assumes the feature is missing.

A third user has ten additional plugin columns enabled and can barely find it.

The underlying WordPress configuration is identical, but the visible interfaces differ.

Personalization and standardization solve different problems

Personal Screen Options are useful when:

  • users have different responsibilities;
  • advanced users need more information;
  • individual workflow preferences matter;
  • there is no need for identical screenshots or documentation.

A standardized configuration becomes more useful when:

  • many users perform the same task;
  • training material assumes a specific layout;
  • clients should see a simplified interface;
  • support teams need predictable screens;
  • the organization wants to reduce accidental interface complexity.

See Standardizing the WordPress Admin for Teams for the wider administration strategy.

For client-facing projects, Reducing WordPress Admin Confusion for Clients covers the same issue from a usability perspective.

Do not remove useful flexibility without a reason

Standardization does not mean every user must see exactly the same information forever.

A sensible administration design can define a useful default while still allowing experienced users to expose additional information when necessary.

The correct balance depends on the organization.

How to design a useful WordPress column strategy

Before adding or removing columns, start with the workflow rather than the available hooks.

Ask what decision the list screen should support

A good custom column helps someone answer a useful question without opening every item.

For example:

Is this article ready?
Who owns this project?
When does this event start?
Which supplier provides this product?
Has this item been synchronized?
What is this product's SKU?

If a column does not help users identify, compare, filter, sort or act on records, it may not belong in the table.

Keep the primary column readable

WordPress list tables have a primary column that normally carries important row interactions.

Do not compress the Title column into a tiny strip because several secondary values were promoted into separate columns.

The table still needs to work as a content-management interface.

Decide whether a value needs visibility, sorting or filtering

These requirements should be considered separately.

A useful planning table might look like:

Value Visible Sortable Filterable
Title Yes Yes No
Publisher Yes Maybe Maybe
ISBN Yes No No
Publication Year Yes Yes Maybe
Internal Notes No No No

This prevents the common mistake of assuming every displayed value needs every list-table feature.

Test with realistic datasets

A custom column that performs perfectly with eight posts may become problematic with:

  • 50 rows per page;
  • several thousand posts;
  • multiple metadata lookups;
  • large taxonomy relationships;
  • several plugins adding their own columns.

Test the actual administration workflow rather than only confirming that the column renders.

Using TheOneWP Custom Content Columns

TheOneWP Custom Content Columns is designed to make supported WordPress administration list screens more informative without requiring a separate custom interface for every content type.

The objective is the same as a carefully implemented custom-column system:

existing WordPress list table
+
useful additional information
=
faster content management

This can be particularly useful when a site has custom content structures and editors repeatedly need information that is stored on the item but not visible from the list screen.

Custom columns should complement native WordPress behavior

The best administration customization usually extends the list table rather than attempting to replace it.

Native list tables already provide important behavior such as:

  • bulk selection;
  • row actions;
  • pagination;
  • search;
  • filters;
  • sortable columns;
  • Screen Options;
  • user-specific preferences.

Preserving those conventions reduces the amount of custom interface logic users need to learn.

Use Screen Options after adding useful information

The ideal result is not necessarily a table where every available column is permanently visible.

A better approach is often:

define useful columns
        +
preserve user visibility controls
        =
flexible native admin workflow

That gives WordPress administrators more information without forcing every user to work with the densest possible table.

Screen Options vs. Custom Columns checklist

  • Use Screen Options when a column already exists and only its visibility needs to change.
  • Use a custom column when the list table needs to display new information.
  • Remember that Screen Options do not automatically turn custom fields into columns.
  • Register columns through the appropriate WordPress list-table filters.
  • Populate custom columns through the appropriate output actions.
  • Escape custom column output correctly.
  • Keep expensive operations out of per-row callbacks where possible.
  • Do not assume a visible column is automatically sortable.
  • Implement the underlying query behavior when adding sortable custom columns.
  • Do not use CSS hiding as a replacement for WordPress column visibility.
  • Keep the primary content column wide enough to remain useful.
  • Avoid adding columns simply because the data exists.
  • Choose columns according to real editorial or administrative decisions.
  • Consider whether users need different column configurations.
  • Consider standardization when teams require predictable interfaces.
  • Test custom columns with realistic numbers of rows.
  • Test narrow administration layouts.
  • Test with plugins that add their own columns.
  • Check whether custom values need sorting independently from visibility.
  • Retest list screens after significant plugin or WordPress changes.

Related guides

Final recommendation

WordPress Screen Options and custom columns solve two different layers of the same administration problem.

Custom columns determine what information a list table can provide.

Screen Options help determine which of those available columns an individual user actually wants to see.

The relationship is therefore:

Custom Columns
→ available information

Screen Options
→ personal presentation

If the information already exists in the table and a user simply wants a cleaner screen, use Screen Options.

If editors repeatedly open individual posts because an important value is missing from the list, consider adding a custom column.

When that new column is registered through WordPress’s normal list-table architecture, it can participate in the same visibility system as native columns, giving users the ability to show or hide it according to their workflow.

Do not stop at visibility, however. Decide separately whether the value needs to be sortable or filterable, and consider the performance cost of generating the value for every row.

For teams, also decide how much personalization is desirable. Individual Screen Options are useful for specialized workflows, while standardized column configurations can make training, documentation and client administration more predictable.

TheOneWP Custom Content Columns can extend supported WordPress list screens with additional useful information while preserving the familiar administration-table workflow.

The strongest approach is therefore not Screen Options or custom columns. It is to define the right information at the list-table level and then give users an appropriate amount of control over how much of that information they see.

Simplify your WordPress stack

A modular WordPress toolkit. 104 focused tools.

Ultimately, you can build cleaner workflows, maintain fewer plugins and enable only the features each website actually needs.