Query All The Post Types

Description

Query All The Post Types is a lightweight developer tool that auto-detects every registered post type on your WordPress site and displays comprehensive information about each one.

Post types are automatically grouped by origin. No configuration required.

WooCommerce store owners: All of your core WooCommerce post types (products, orders, coupons, subscriptions, etc.) are grouped in a dedicated WooCommerce tab for easy access.

Developers and AI users: As of version 2.1, Query All The Post Types now registers every post type as a discoverable entry in the WordPress Abilities API introduced in WordPress 6.9. Any authenticated tool, such as an MCP client, an AI assistant, or a custom admin dashboard, can query your site and get a complete, structured inventory of every post type, what it supports, and how it’s configured.

As of version 2.2, QATP includes a built-in API Explorer so you can browse, query, and share your site’s post type data directly from the WordPress admin without writing any code. Which makes building Custom Post Types easier and verifying the production site has all of the data needed.

Features

  • Auto-Detection – Discovers all post types registered by WordPress core, plugins, and themes
  • Tabbed Interface – Post types organized into logical groups for easy navigation.
  • Comprehensive Data – View all registration settings, REST API config, supports, taxonomies, and labels
  • REST API Links – Clickable endpoint URLs for post types exposed to the REST API
  • WooCommerce Tab – Dedicated purple tab groups all your WooCommerce post types (products, orders, coupons, and more)
  • Quick Actions – View All and Add New buttons for post types with admin UI
  • WordPress Abilities API – Every post type registered as a machine-readable ability (WordPress 6.9+)
  • API Explorer – Browse, query, and copy commands for any post type directly from the admin (version 2.2+)

Post Type Groups

  • WordPress Core – Public – Built-in types with a UI (post, page, attachment)
  • WordPress Core – Internal – Built-in types without a UI (revision, nav_menu_item, wp_template, etc.)
  • WooCommerce – Products, orders, coupons, subscriptions, and more (when active)
  • Advanced Custom Fields / ACF Pro – Field groups, post types, taxonomies, and options pages (when active)
  • Elementor – Elementor library, floating buttons, and component types (when active)
  • LearnDash – Courses, lessons, topics, quizzes, assignments, and more (when active)
  • BuddyPress – Groups, member types, and email types (when active)
  • GiveWP – Donation forms and payment types (when active)
  • Easy Digital Downloads – Downloads and EDD-registered types (when active)
  • AppPresser – Push notification and log types (when active)
  • Plugin/Theme – Public – Custom post types from any other plugin or theme, with a public UI
  • Plugin/Theme – Internal – Custom post types from any other plugin or theme, without a public UI

Data Displayed Per Post Type

  • Slug, description, and all boolean settings
  • Public, publicly queryable, show UI, show in nav menus, show in admin bar
  • REST API: show in REST, REST base, REST namespace, REST controller class
  • Has archive, exclude from search, capability type, map meta cap
  • Hierarchical, rewrite rules, query var, menu position, menu icon
  • Can export, delete with user
  • Supported features (title, editor, thumbnail, excerpt, comments, etc.)
  • Associated taxonomies with admin links
  • All registered labels (expandable section)
  • REST API endpoint URL (clickable)

WordPress Abilities API

Starting in version 2.1, QATP registers every post type as a WordPress Ability: a machine-readable declaration that authenticated tools can query via the REST API.

This feature requires WordPress 6.9 or later. On older versions, QATP continues to work normally and the Abilities API integration is silently skipped.

What gets registered

Each post type is registered as an ability under the qatp/ namespace. For example with WordPress Core, qatp/post, qatp/product, qatp/page. Abilities are grouped into categories matching the tabs you see in the admin UI: qatp-core-public, qatp-core-internal, qatp-woocommerce, and so on.

Running an ability returns a structured data object for that post type:

  • slug – the registered post type name
  • label – plural label (e.g. “Posts”)
  • singular – singular label (e.g. “Post”)
  • public, show_ui, show_in_rest, hierarchical – boolean flags
  • rest_base – the REST API base URL segment
  • supports – array of supported features (title, editor, thumbnail, etc.)
  • taxonomies – array of associated taxonomy slugs

Who can access it

Access requires the manage_options capability, meaning site administrators only. This is intentional. Post type registration data can reveal details about your site’s plugin stack and data architecture. It is not exposed publicly.

API Explorer

The API Explorer is a built-in interface for browsing and querying your site’s WordPress Abilities directly from the admin. It is available as of version 2.2.

To open it, go to Tools > Query Post Types and click API Explorer in the toggle at the top right of the page.

How it works

When you open the Explorer, you see a row of pills across the top. Each pill represents an ecosystem on your site: WooCommerce, LearnDash, GiveWP, core WordPress types, and so on. Click a pill to filter the results to that group. Click All to see everything.

Below the pills, each post type on your site appears as a card. The card shows the ability name, the label, and which ecosystem it belongs to.

Click a card to select it. A Run button appears below the cards and Command Reference. Click Run button to fetch the live data for that ability and see the full JSON response displayed below.

The Command Reference

Every time you select a card and run an ability, the Command Reference panel updates automatically. It shows you three ways to fetch that same data yourself:

  • REST URL – a clickable link you can open directly in your browser while logged in as an admin
  • WP-CLI – a ready-to-copy WP-CLI command that runs the same request from the terminal, authenticated as your current user account
  • curl – a curl command using Application Password authentication that works from any terminal or HTTP client

REST URL example:

https://yoursite.com/wp-json/wp-abilities/v1/abilities/qatp/post/run?_wpnonce=abc123

The nonce is generated automatically and appended to the URL. The link works in your browser as long as you are logged in as an admin.

WP-CLI example:

wp --user=1 eval 'print_r(rest_do_request(new WP_REST_Request("GET", "/wp-abilities/v1/abilities/qatp/post/run")));'

The --user= flag is automatically set to your current WordPress user ID. You do not need to edit the command.

curl example:

curl -s -u "admin:application_password" "https://yoursite.com/wp-json/wp-abilities/v1/abilities/qatp/post/run"

Replace admin with your WordPress username and application_password with an Application Password generated from your profile. See the Application Passwords section below.

Application Passwords for curl

The curl command in the Command Reference uses Application Password authentication. Application Passwords are a built-in WordPress feature (available since WordPress 5.6) that let external tools authenticate with the REST API without using your main account password.

To generate an Application Password:

  1. Go to Users > Your Profile in your WordPress admin
  2. Scroll down to the Application Passwords section
  3. Enter a name for the password (e.g. “QATP curl”)
  4. Click Add New Application Password
  5. Copy the generated password immediately. WordPress does not show it again.

Use the generated password in place of application_password in the curl command. Spaces in the generated password are fine — you can include them as-is or remove them.

Note: The X-WP-Nonce authentication approach used in some WordPress tutorials only works when a browser session cookie is also present. It does not work for standalone curl requests from a terminal. Application Passwords are the correct approach for curl and all external HTTP clients.

Selecting multiple post types

You can select more than one card at a time. Click additional cards to add them to your selection. A bar appears above the results showing how many abilities you have selected, with a Clear button to start over.

When you have two or more abilities selected, the Command Reference updates to show one curl command per selected ability, stacked together. This gives you a ready-made set of commands you can run in sequence to pull data for all your selected post types at once.

Click Run All to fetch all selected abilities at once and see their responses stacked in the drilldown panel. This is useful when you want to compare post type configurations side by side.

You can mix and match across ecosystems. Select a LearnDash course, a GiveWP form, and a WooCommerce product all at the same time to get the commands for all three in one block.

Shareable links

The URL in your browser updates as you make selections. If you are in Explorer mode with abilities selected, the URL encodes that state using a hash fragment:

https://yoursite.com/wp-admin/tools.php?page=query-all-the-post-types#mode=explorer&abilities=qatp/product,qatp/course

Copy and paste the URL into Slack, an email, or a document. Anyone with admin access on that site can open it and land in the exact same view, with the same abilities selected and the Command Reference already populated.

The back button also works as expected. Navigate to a previous selection by pressing back, just like any other page.

Giving the Explorer output to Claude

The API Explorer is designed to work with AI assistants. Copy the curl commands from the Command Reference and paste them into a conversation with Claude. Claude can read the JSON responses and use them to understand your site’s post type structure, answer questions about your data architecture, or help you write code that works with your specific setup.

You can also share the URL directly. A URL with abilities pre-selected is a compact way to give someone, or an AI tool, a pointer to exactly what you want them to look at.

How to browse without the Explorer

In your browser:
Go to Tools > Query Post Types in your WordPress admin. The sidebar shows a Browse Abilities API button. Click it and it opens the endpoint in a new tab with authentication already handled.

Install a JSON Formatter browser extension (available for Chrome and Firefox) to make the output readable.

Note: visiting the endpoint URL directly in your browser without clicking the button will return a 401 error. The WordPress REST API requires a valid nonce for cookie-authenticated requests. The button generates one automatically.

With WP-CLI:

See all QATP abilities and their descriptions:

wp --url=https://yoursite.com --user=1 eval '$r = rest_do_request(new WP_REST_Request("GET", "/wp-abilities/v1/abilities")); $qatp = array_filter($r->get_data(), fn($a) => strpos($a["name"], "qatp/") === 0); foreach ($qatp as $a) { echo $a["name"] . "\n  " . $a["label"] . " - " . $a["description"] . "\n"; }'

Run a specific ability to get full structured data:

wp --url=https://yoursite.com --user=1 eval '$r = rest_do_request(new WP_REST_Request("GET", "/wp-abilities/v1/abilities/qatp/post/run")); echo json_encode($r->get_data(), JSON_PRETTY_PRINT);'

Replace --user=1 with the ID of any administrator account on your site if user ID 1 is not an admin.

With curl:

List all QATP abilities:

curl -s -u "admin:application_password" "https://yoursite.com/wp-json/wp-abilities/v1/abilities?category=qatp-core-public"

Run a specific ability:

curl -s -u "admin:application_password" "https://yoursite.com/wp-json/wp-abilities/v1/abilities/qatp/post/run"

With Postman or any REST client:
Create an Application Password in your WordPress admin under Users > Your Profile > Application Passwords. Use HTTP Basic Auth with your username and the generated password. Send a GET request to https://yoursite.com/wp-json/wp-abilities/v1/abilities.

Screenshots

  • Main interface showing post types grouped into tabs
  • Post type card with settings, supports, and taxonomies
  • WooCommerce tab with purple-branded styling
  • WP Abilities API Endpoint Example
  • API Explorer with ecosystem pills and ability cards
  • API Explorer with multiple abilities selected and Command Reference populated

Installation

  1. Upload the query-all-the-post-types folder to /wp-content/plugins/
  2. Activate the plugin through the Plugins menu
  3. Navigate to Tools > Query Post Types

FAQ

How does the plugin detect post types?

It uses the WordPress core function get_post_types() to retrieve all registered post types at runtime. Nothing is hardcoded. Any post type registered by any plugin, theme, or WordPress core will appear automatically.

Where do I find the plugin page?

Go to Tools > Query Post Types in your WordPress admin dashboard.

I updated and can’t find the plugin anymore!

In version 2.0, the plugin moved from its own top-level admin menu to the Tools menu. Look for Tools > Query Post Types.

Why don’t I see View All / Add New buttons on some post types?

These buttons only appear for post types that have show_ui set to true. Internal post types without an admin interface won’t have these action buttons.

Where are my WooCommerce post types?

Look for the WooCommerce tab. All WooCommerce-related post types (products, orders, coupons, subscriptions, etc.) are grouped there for easy access. The tab only appears when WooCommerce is active.

Can I use this on a production site?

Yes. The plugin is read-only and does not modify any data. It only displays information about registered post types.

Does this plugin work with multisite?

Yes. Each site in a multisite network will display its own registered post types.

What is the WordPress Abilities API?

The Abilities API is a feature introduced in WordPress 6.9 that lets plugins register machine-readable declarations about what a site can do. QATP uses it to expose your post type architecture to AI tools, MCP clients, and authenticated admin dashboards without any additional configuration.

Do I need WordPress 6.9 for the Abilities API feature?

Yes. The Abilities API integration requires WordPress 6.9 or later. On earlier versions, everything else in QATP works normally. The Abilities API registration is silently skipped.

Is the Abilities API data public?

No. The endpoint requires administrator-level authentication (manage_options). Anyone who requests the URL without being logged in as an admin will receive a 401 error. This is by design. Post type data can reveal details about your site’s plugin stack.

What is the API Explorer?

The API Explorer is a built-in interface added in version 2.2 that lets you browse, run, and copy commands for any WordPress Ability registered by QATP, directly from your WordPress admin. No code required. See the API Explorer section above for full details.

Can I share an API Explorer link with someone?

Yes. When you are in the Explorer with abilities selected, the URL updates to reflect your current state. Paste that URL in Slack or send it to a teammate and they will open the same view with the same selections already loaded.

Why does the REST URL require a nonce?

WordPress uses nonces to verify that REST API requests made from a browser are intentional and authenticated. The nonce is tied to your current login session. The REST URL links in the Command Reference include a nonce automatically so they work when you click them in the browser. For curl and other external clients, use Application Passwords instead.

The curl command in the Command Reference says “application_password” — what do I replace it with?

Generate an Application Password from your WordPress profile under Users > Your Profile > Application Passwords. Use the generated password in place of application_password. Your WordPress username is already pre-filled in the command.

How does the shareable URL work?

When you are in the Explorer, the URL in your browser updates automatically using a hash fragment to encode your current mode and selected abilities. No data is sent to any server. The hash is parsed locally in your browser when the page loads, restoring your exact view. Anyone with admin access on the same WordPress site can open the URL and land in the same state.

Reviews

ఫిబ్రవరి 9, 2026
If you’ve ever been handed a WordPress website that felt like a knotted string of Christmas lights, this plugin will help you untangle the mess. A must have developer too.
డిసెంబర్ 4, 2016
I like using this plugin. It beats the other post meta plugins
Read all 3 reviews

Contributors & Developers

“Query All The Post Types” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

2.2.0

API Explorer

  • New: API Explorer mode added to the admin page. Toggle between the existing Post Types view and the new API Explorer using the mode selector at the top of the page.
  • New: Ecosystem pills row shows one pill per detected plugin group (All, WooCommerce, LearnDash, GiveWP, EDD, BuddyPress, ACF, Elementor, Divi, AppPresser, Core Public, Core Internal, Plugin/Theme). Click a pill to filter cards to that group.
  • New: Ability cards display every registered QATP post type as a selectable card showing the ability name, plural label, and ecosystem badge. Cards are filtered live as you change pills.
  • New: Click a card to select it. A Run button appears below the card grid. Click Run to fetch the live JSON response from the Abilities API and display it in the drilldown panel below.
  • New: Drilldown panel renders the full structured JSON response returned by the ability’s /run endpoint, including slug, labels, boolean flags, REST base, supports, and taxonomies.
  • New: Tab overflow handling. When the ecosystem tab row is too wide for the screen, tabs that do not fit collapse into a “More” dropdown button. The dropdown closes when you click outside it or press Escape.

Multi-Select Query Builder

  • New: Multi-select mode. Click additional cards to add them to an active selection. You are not limited to one card at a time.
  • New: Selection bar appears above the card grid when one or more cards are selected, showing the count of selected abilities and a Clear button to reset the selection.
  • New: Run All button appears in the drilldown area when two or more abilities are selected. Clicking it fetches all selected abilities in parallel and appends each response to the drilldown panel, stacked in order.
  • New: Selecting cards across different ecosystem pills is fully supported. Filter to LearnDash, select a card, switch to GiveWP, select another card. Both remain selected.

Command Reference

  • New: Command Reference panel appears alongside or below the drilldown and updates every time you run an ability or change your selection.
  • New: REST URL is displayed as a clickable link that opens the endpoint in a new browser tab. The current user’s authentication nonce is appended automatically as a _wpnonce query parameter so the link works immediately when clicked.
  • New: WP-CLI command uses wp --user= with the current logged-in administrator’s user ID. You do not need to know your user ID or modify the command before running it.
  • New: curl command uses Application Password authentication format (-u "username:application_password"). Your WordPress username is pre-filled. An inline link below the curl block points directly to your profile’s Application Passwords section and to the WordPress developer documentation.
  • New: Multi-select Command Reference shows one curl command per selected ability, stacked in a single copyable block. WP-CLI commands are similarly stacked. This gives you a complete set of commands for your entire selection in one copy-paste.
  • Changed: curl authentication changed from X-WP-Nonce header to Application Password (-u) format. The nonce approach requires a browser session cookie and fails when run from a standalone terminal. Application Passwords work from any HTTP client on any machine.

Shareable URL State

  • New: The browser URL updates automatically as you navigate the Explorer using history.replaceState. No new history entries are created on every card toggle.
  • New: The URL hash encodes the current mode and selected abilities. Example: #mode=explorer&abilities=qatp/product,qatp/course. Copy the URL from your browser address bar to share your exact view.
  • New: On page load, the hash is parsed and the Explorer restores the encoded mode and ability selection automatically. Shared links open in the correct state with the Command Reference already populated.
  • New: The browser back and forward buttons work as expected. Navigating back restores the previous selection state.

Admin UI

  • New: Legend in the sidebar now shows a Core + External = Total equation so you can see at a glance how many post types come from WordPress core versus plugins and themes.
  • Changed: Stats block removed from the page header. The count information is now in the sidebar legend only.
  • Changed: “New in 2.1” sidebar box updated to “New in 2.2” with a description of the API Explorer and a link to open it.
  • Changed: Explorer guide panel redesigned with an eyebrow label, a white card with a blue left accent border, three numbered step columns, and a four-column use-case row with dashicons. The guide explains the Explorer workflow and links to relevant documentation.
  • Fixed: Step 2 of the Explorer guide now correctly explains that clicking a card selects it and that you must click the Run button to fetch and display data. The previous text incorrectly implied clicking a card alone would run the ability.

Code Quality

  • Improved: PHPStan static analysis raised from level 8 to level 9 (maximum strictness). All 36 cascading type errors resolved by tightening PHPDoc array shape annotations on get_grouped_post_types().
  • Improved: PHPStan added to the npm lint gate. npm run lint now runs ESLint, Stylelint, PHPCS, and PHPStan in sequence. All four must pass with zero violations before any commit.
  • Improved: --memory-limit=512M flag added to the PHPStan script to prevent out-of-memory failures on large codebases.

2.1.0

  • New: WordPress Abilities API integration (requires WordPress 6.9+). Every post type on your site is now registered as a machine-readable ability
  • New: Abilities grouped by origin: Core Public, Core Internal, WooCommerce, and plugin-specific categories
  • New: Each ability exposes slug, labels, boolean flags, REST base, supported features, and associated taxonomies
  • New: AppPresser ecosystem tab. AppPresser post types grouped automatically when the plugin is active
  • New: Developer-facing label when a post type is registered without a singular name
  • Improved: Post type classifier is instantiated once per request (performance)
  • Requires WordPress 6.9+ for Abilities API. All other features work on WordPress 5.0+

2.0.1

  • Accessibility: Added aria-hidden to decorative sidebar icons
  • Accessibility: Settings tables now use proper th scope=”row” for screen readers
  • Accessibility: Added prefers-reduced-motion support for users who prefer reduced animations
  • Tested up to WordPress 6.9

2.0.0

  • Breaking: Plugin page moved to Tools > Query Post Types (was its own top-level menu)
  • Complete rewrite with modern OOP architecture
  • New tabbed interface for better organization
  • Auto-detection of all post types (zero hardcoded slugs)
  • Intelligent grouping based on _builtin, public, and show_ui properties
  • WooCommerce ecosystem tab with custom styling (when WooCommerce is active)
  • Comprehensive settings display for each post type
  • REST API endpoint links
  • Feature support badges
  • Taxonomy links to admin pages
  • Expandable labels section
  • Page header with post type statistics
  • Sidebar with about info and legend
  • Responsive card-based layout
  • WordPress 5.7 admin color palette
  • All output properly escaped per WordPress coding standards

1.9.4

  • Tested with WP 5.0

1.9.3

  • Added post type counter details

1.9.2

  • Fixed SVN sync issues from 1.9.1

1.9.1

  • Fixed changelog link in admin panel
  • Fixed unlinked taxonomies in newer WooCommerce versions
  • Fixed taxonomies not showing for hierarchical post types
  • Added link to custom post type register page
  • Added active post type count display

1.9

  • Major UI overhaul with color-coded post type categories
  • Added WooCommerce core post type support

1.8.1

  • Security improvements

1.8

  • Refactored page layout
  • Added sidebar, CPT details, action buttons

1.0

  • Initial release