Using WordPress ‘post_type_exists()’ PHP function

The post_type_exists() WordPress PHP function determines whether a post type is registered.




$exists = post_type_exists('book');
// returns true if 'book' is a registered post type


  • $post_type (string) – Required. The post type name you want to check if it exists.

More information

See WordPress Developer Resources: post_type_exists()


Check if a custom post type ‘product’ exists

if (post_type_exists('product')) {
echo 'The "product" post type exists.';
} else {
echo 'The "product" post type does not exist.';

Conditional display of a post type archive link

if (post_type_exists('event')) {
echo '<a href="' . get_post_type_archive_link('event') . '">View all events</a>';

Create a custom post type only if it doesn’t exist

if (!post_type_exists('portfolio')) {
register_post_type('portfolio', $args);

Check multiple post types for existence

$post_types = array('product', 'event', 'book');
foreach ($post_types as $post_type) {
if (post_type_exists($post_type)) {
echo "The post type '{$post_type}' exists.<br>";
} else {
echo "The post type '{$post_type}' does not exist.<br>";

Use post type existence check in a plugin activation hook

function my_plugin_activation() {
if (!post_type_exists('custom_post')) {
// Register the custom post type or handle other setup tasks
register_activation_hook(__FILE__, 'my_plugin_activation');