Custom Post Type Not Showing in the Bulk Editor: How to Fix It
A custom post type not showing in the bulk editor is almost always a post type that its plugin registered as non-public. WOLF fills its post type dropdown only with public post types, so posts and pages are there, Media is there, and the course groups, bookings or menu items of a plugin are not, even though the plugin gives them their own list screen in wp-admin. One filter adds them. Below is why it happens, which code to use, what it changes, and how to get the fields of the new type into the table.
Why a custom post type is not showing in the bulk editor
Every post type is registered with a set of flags. The public flag says whether the entries are meant to be seen on the front end: their own URLs, archives, search results. Booking, course, restaurant, directory and form plugins often set it to false for their internal data, because a booking record or a course group should not have a public page. The entries still get an admin screen, so the type looks like any other custom post type in wp-admin.
WOLF builds its list with get_post_types(array('public' => true)). The same list feeds the post type switcher on the tools panel of the Posts Editor and the options of the Post type column, so a non-public type is missing from both.
To confirm this is your case, open the plugin's list screen. If the address ends with edit.php?post_type=course_group (or any other slug), the entries are posts of that type and the slug is what WOLF needs. Typing the slug into Site editors post types does not add it: that setting only narrows the list for non-admin users, it never extends it.
Show non-public post types with wpbe_post_type_args
The arguments of that query pass through the filter wpbe_post_type_args. The cleanest change is to list every post type that has an admin screen, public or not:
/*
* WOLF: list every post type that has an admin screen,
* including non-public types registered by plugins.
* Child theme functions.php or a code snippets plugin.
*/
add_filter('wpbe_post_type_args', function ($args) {
return array('show_ui' => true);
});
Reload the WOLF page and open the post type switcher: the missing type is now in the list, next to posts, pages and Media. A few WordPress types that have their own editing screen, such as synced patterns (wp_block), appear as well; just do not select them.
If the type is still missing, its plugin registered it without the standard admin screen and manages the entries on pages of its own. Remove the restriction completely instead:
/*
* WOLF: list all registered post types.
* Child theme functions.php or a code snippets plugin.
*/
add_filter('wpbe_post_type_args', function ($args) {
unset($args['public']);
return $args;
});
This lists everything, including WordPress internals such as revision, nav_menu_item and customize_changeset. Leave those alone: they are not content, and bulk changes to them can break menus or revisions.
You may also see the snippet return array('public' => false);. It works the other way round: it lists only the non-public types, so posts and pages disappear from the dropdown until you remove it. Use it only if you edit nothing else in WOLF.
What the filter changes, and what it does not
- It changes only the list of post types on the WOLF page. The post type itself is untouched: it does not become public, gets no front-end URLs, and does not appear in search results or sitemaps.
- WOLF reads the filter late in the
inithook, so functions.php of the active (child) theme and code snippets plugins both work. - The wider list is also used by the Post type column, which can move a post to another type. Do not move content into a type you only added for editing.
Add the fields of the new post type as columns
A plugin's post type is mostly meta fields: dates, prices, capacities, settings. They are not columns until you add them.
- Select the new type in the post type switcher of the Posts Editor.
- Open an entry of that type in wp-admin that has all fields filled, and note its ID (the number after
post=in the address). - In the Meta Fields tab, enter the ID under Get meta keys from any post by its ID and click Get. WOLF lists every meta key stored on that entry.
- Delete the keys you do not need, give the others readable titles (the title becomes the column header), and choose the view and type of each one: number for numeric values, checkbox for 1/0 values, array for serialized data. Click Save meta fields.
- In the Settings tab, type the titles into the columns finder, enable the columns, drag them into order and click Save all settings.
If Separate columns and meta for post types is set to Yes in the general settings, every post type has its own meta field list and column set. Select the type first, then add its meta fields; otherwise they are attached to the type that was selected before.
The Meta Fields documentation explains the views and types, and bulk editing serialized meta data covers fields that store arrays. Filtering and bulk editing then work as for any other type, as described in bulk editing custom post types.
Editors and other non-admin users still do not see it
Users who are not administrators only get the post types listed in Settings → Site editors post types. Add the slug there, comma-separated and without spaces, for example post,page,course_group, and click Save all settings. The setting can only pick from the list the filter produced, so the filter is still needed for a non-public type. If an editor sees the message No any post type permitted to edit for site editors, read how WOLF decides which post types a user may edit.
If the post type still does not appear
- The code does not run. The snippet is inactive, or it sits in the functions.php of a theme that is not active (for example the parent theme while a child theme is active).
- The entries are not posts. If the plugin's list screen is
admin.php?page=…rather thanedit.php?post_type=…, the plugin often keeps its records in its own database tables. Such records are not posts, and no post editor can list them. - The type is listed, but the table keeps showing posts. WOLF switches the post type back when it treats your account as a site editor, which also happens to administrators whose roles were changed by a role-manager plugin. The site editors article linked above shows how to check the account.
If the type is registered as a post type and still does not show up with the second snippet active, open a topic on the WOLF support forum with the post type slug and the plugin that registers it.