Choose exactly what shows in every content list
Custom Content Columns lets you pick, rename, resize, reorder and sort the columns in any post type's list, the media library, taxonomies or the Users screen.
- Drag columns between Available and Active panels.
- Rename any column with a custom label.
- Set a fixed width in px, %, em, rem, vw or vh.
- Add a custom column pulled from post meta, user meta or term meta.
What does Custom Content Columns do?
When the custom_content_columns module is active, TOWP_Custom_Content_Columns filters the manage_{type}_posts_columns hook, and its taxonomy and Users equivalents, for every enabled content type, replacing WordPress's default column set with a saved configuration: which columns show, in what order, under what label and at what width. A "Columns" link appears in each enabled type's submenu, alongside a badge on the list screen itself, opening a dedicated manager with drag-and-drop Available and Active panels. Because columns added by other plugins appear in the Available panel alongside WordPress's own, a screen crowded by third-party additions can be trimmed to just what's actually useful.
Every plugin adds a column, nobody removes one
A list screen accumulates columns the way an inbox accumulates subscriptions: one addition at a time, with no obvious moment to clean up.
List screens accumulate columns from every plugin
Each active plugin that touches a post type tends to add its own column, and over time a list screen fills with fields nobody actually reads.
WordPress's built-in column toggle is all-or-nothing
The Screen Options panel can hide a column, but it can't rename one, resize one, reorder them, or pull in a custom field as a new column.
A real column editor, not just a hide toggle
The module turns each content list into something you actively design: which columns show, what they're called, how wide they are, and in what order.
Drag columns in and out
Move any column, WordPress's own or one added by another plugin, between the Available and Active panels with drag and drop.
Rename, resize and reorder
Give any active column a custom label, a fixed width, and a position, independent of how the underlying plugin registered it.
Pull in a custom field as a column
Add a column sourced directly from post meta, user meta or term meta, with its own label and optional date formatting.
Precise control over every list screen
Every capability below is present in the supplied PHP class, its AJAX handlers and settings registration.
Post types, media, taxonomies and Users
Any enabled post type, the media library, any enabled taxonomy, and the Users list can each have their own column configuration.
Drag-and-drop Available/Active panels
A dedicated manager screen lists every available column on one side and the active, ordered set on the other.
Post meta, user meta and term meta
A custom column can pull its value directly from a meta field, with an optional date format for date-like values.
A validated width, in six units
Column width accepts px, %, em, rem, vw or vh, validated against a strict pattern before being saved.
Sortable columns that actually sort
A column marked sortable hooks into the query itself, so sorting by a meta column produces a genuinely sorted list, not just a label.
Sticky header, freeze columns, scroll control
Per-type table options control a sticky header row, how many left-hand columns stay frozen while scrolling, and whether horizontal scroll is disabled.
Where a rebuilt column set helps most
The module supports every list screen that's grown more crowded than useful.
Sites cluttered by plugin columns
Trim a Products or Orders list crowded with columns from several plugins down to the handful anyone actually reads.
Surfacing a useful meta field
Turn a post meta field, like an expiration date or an external reference number, into its own sortable column.
A more useful Users list
Add columns like last login or registration date directly to the Users screen instead of opening each profile individually.
Lists that show what people actually read
The module combines drag-and-drop editing, custom meta columns and genuine sortability in one manager.
Filters scoped to what's actually configured
The verified implementation only adds filtering where a saved configuration exists.
Only enabled types are filtered
Column filters only get registered for the post types, taxonomies and lists explicitly enabled in settings.
Two small, dedicated options
Column configuration and table behaviour settings each live in their own non-autoloaded option, separate from general plugin settings.
No extra queries for unsaved types
A content type with no saved column configuration is left completely untouched, with no added filtering or overhead.
Validated field by field, bounded by design
The code restricts management to administrators and validates every saved value individually.
Administrator-only management
The manager screen and every AJAX action require the manage_options capability.
Nonce-verified saves
Saving columns, saving table options, and resetting all call check_ajax_referer() before processing anything.
Field-by-field sanitization
Every saved column's key, label, width and date format passes through WordPress's own sanitization functions individually.
Bounded payload size
A save request larger than 100,000 characters gets rejected outright, guarding against an oversized or malformed payload.
Built around native WordPress list-table hooks
The supplied code integrates through APIs present in WordPress core. No compatibility claim beyond the verified implementation is assumed.
manage_{type}_posts_columns
Integrates through the standard WordPress column filters for post types, media, taxonomies and Users, the same hooks any plugin uses to add a column.
pre_get_posts and friends
Meta-based sorting hooks into pre_get_posts, pre_get_users and parse_term_query, so a sortable meta column genuinely reorders the list.
Discovered, not replaced
Columns registered by other plugins get discovered and listed as Available, not overwritten, so nothing from another plugin gets lost.
TheOneWP versus common alternatives
Compare the verified Custom Content Columns implementation with WordPress's own built-in Screen Options.
| Capability | TheOneWP Custom Content Columns | Other common solutions |
|---|---|---|
| Hiding a column | Move it out of Active with drag and drop | WordPress's Screen Options can hide one, nothing more |
| Renaming a column | A custom label per column | Not possible without editing plugin code |
| Resizing a column | A validated width in six possible units | Not available at all through core |
| Custom meta columns | Add one sourced from post, user or term meta | Usually requires a code snippet per field |
| Administration | One manager screen per content type, reached from its own submenu | Screen Options only, with no deep customization |
Rebuild a column set in four steps
Start with the type that's grown the most cluttered, and work through the others as needed.
Enable Custom Content Columns
Activate the module from the TheOneWP Content settings tab and choose which post types, taxonomies and lists to manage.
Open the Columns manager
Use the "Columns" link in a type's submenu, or the badge on its list screen, to open the two-panel manager.
Move, rename and resize columns
Drag columns between Available and Active, set a custom label and width, and add a custom meta column if needed.
Save and adjust table behaviour
Save the column configuration, then set sticky header, frozen columns or scroll behaviour if the list needs it.
Design lists around what people ask
A well-tuned column set answers the questions people actually have about that list.
Start by removing, not adding
Trimming an over-crowded list to the columns people actually read usually helps more than adding new ones.
Only mark a column sortable if it should be
Sorting works properly on the columns it's enabled for; leave it off for columns that don't have a meaningful order.
Use meta columns for genuinely useful fields
A custom meta column earns its place when it answers a question people ask about that list regularly.
Revisit column configuration after adding a plugin
A newly installed plugin's columns show up in Available; decide deliberately whether they belong in Active.
Avoid assumptions that cause confusion
The module has a defined behaviour around hiding, sorting and width that's easy to misread.
Assuming a hidden column is deleted
Moving a column out of Active only hides it from the list; it stays available to add back at any time.
Expecting every column to be sortable automatically
A column only sorts the list if it's explicitly marked sortable in its configuration.
Setting a width in the wrong format
A width has to match one of six accepted units exactly, like 150px or 20%; anything else is rejected and saved as unset.
Custom Content Columns FAQ
These answers come directly from the verified class, its AJAX handlers and settings registration.
What does Custom Content Columns do?
It lets you choose, rename, resize, reorder and sort the columns shown in any enabled post type's list, the media library, taxonomies or the Users screen.
Can I add a column from custom fields?
Yes. A custom column can pull its value from post meta, user meta or term meta, with an optional date format.
Does this replace columns added by other plugins?
No. Third-party columns get discovered and listed in the Available panel alongside WordPress's own, ready to be managed the same way.
Can I set an exact width for a column?
Yes. Width accepts px, %, em, rem, vw or vh, validated against a strict pattern before being saved.
Can a custom meta column actually be sorted?
Yes, if marked sortable. Meta-based sorting hooks into the underlying query, so sorting genuinely reorders the list rather than just labeling a column.
Where do I find the columns manager for a specific post type?
From a "Columns" link added to that type's submenu, or from a badge shown directly on its list screen.
What happens to a column I move out of Active?
It moves back to the Available panel; nothing is deleted, and it can be re-added at any time.
Can I control table behaviour like a sticky header?
Yes. Per-type options control a sticky header row, how many columns stay frozen while scrolling, and whether horizontal scroll is disabled.
Who can change column configuration?
Only an administrator with access to TheOneWP settings; every save action also requires a verified nonce.
Is there a way to reset a type's columns back to default?
Yes. A reset action removes the saved configuration for a type, or for every type at once, restoring WordPress's original columns.
Stop scrolling past columns nobody reads.Design the list that actually helps.
Use Custom Content Columns to choose, rename, resize and sort exactly the columns each content list needs.

