WordPress.org

Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Function Reference/get post type object

Description

Retrieves an object which describes any registered post type (i.e. built-in types like 'post' and 'page', or any user-created custom post type).

Usage

<?php get_post_type_object$post_type ); ?>

Parameters

$post_type
(string) (required) The name of the post type as used when registering the post type.
Default: None

Return Values

(object) 
on success.

Nothing on failure (e.g. can check for null).

Examples

$obj = get_post_type_object( 'post' );
echo $obj->labels->singular_name;

Technically, this is the same as

global $wp_post_types;
$obj = $wp_post_types['post'];
echo $obj->labels->singular_name; 

print_r( $obj ) might return something like this:

stdClass Object
(
   [labels] => stdClass Object
       (
           [name] => Posts
           [singular_name] => Post
           [add_new] => Add New
           [add_new_item] => Add New Post
           [edit_item] => Edit Post
           [new_item] => New Post
           [view_item] => View Post
           [search_items] => Search Posts
           [not_found] => No posts found
           [not_found_in_trash] => No posts found in Trash
           [parent_item_colon] => 
       )

   [description] => 
   [publicly_queryable] => 1
   [exclude_from_search] => 
   [_builtin] => 1
   [_edit_link] => post.php?post=%d
   [capability_type] => post
   [hierarchical] => 
   [public] => 1
   [rewrite] => 
   [query_var] => 
   [register_meta_box_cb] => 
   [taxonomies] => Array
       (
       )

   [show_ui] => 1
   [menu_position] => 
   [menu_icon] => 
   [permalink_epmask] => 1
   [can_export] => 1
   [show_in_nav_menus] => 1
   [name] => post
   [cap] => stdClass Object
       (
           [edit_post] => edit_post
           [edit_posts] => edit_posts
           [edit_others_posts] => edit_others_posts
           [publish_posts] => publish_posts
           [read_post] => read_post
           [read_private_posts] => read_private_posts
           [delete_post] => delete_post
       )

   [label] => Posts
)

Assuming we have the post type 'certification', we could do this:

$obj = get_post_type_object( 'certification' );

print_r( $obj ) might return something like this:

stdClass Object
(
    [labels] => stdClass Object
        (
            [name] => Certification
            [singular_name] => Certification
            [add_new] => Add New
            [add_new_item] => Add New Certification
            [edit_item] => Edit Certification
            [new_item] => New Page
            [view_item] => View Certification
            [search_items] => Search Certification
            [not_found] => Not found
            [not_found_in_trash] => Not found in Trash
            [parent_item_colon] => Parent Certification:
            [all_items] => All Certifications
            [menu_name] => Certifications
            [update_item] => Update Certification
            [name_admin_bar] => Certification
        )

    [description] => Certifications
    [public] => 1
    [hierarchical] => 1
    [exclude_from_search] => 
    [publicly_queryable] => 1
    [show_ui] => 1
    [show_in_menu] => 
    [show_in_nav_menus] => 1
    [show_in_admin_bar] => 1
    [menu_position] => 5
    [menu_icon] => dashicons-welcome-widgets-menus
    [capability_type] => post
    [map_meta_cap] => 1
    [register_meta_box_cb] => 
    [taxonomies] => Array
        (
            [0] => objective
        )

    [has_archive] => 1
    [rewrite] => Array
        (
            [slug] => certification
            [with_front] => 1
            [pages] => 1
            [feeds] => 1
            [ep_mask] => 1
        )

    [query_var] => certification
    [can_export] => 1
    [delete_with_user] => 
    [_builtin] => 
    [_edit_link] => post.php?post=%d
    [label] => Certification
    [name] => certification
    [cap] => stdClass Object
        (
            [edit_post] => edit_post
            [read_post] => read_post
            [delete_post] => delete_post
            [edit_posts] => edit_posts
            [edit_others_posts] => edit_others_posts
            [publish_posts] => publish_posts
            [read_private_posts] => read_private_posts
            [read] => read
            [delete_posts] => delete_posts
            [delete_private_posts] => delete_private_posts
            [delete_published_posts] => delete_published_posts
            [delete_others_posts] => delete_others_posts
            [edit_private_posts] => edit_private_posts
            [edit_published_posts] => edit_published_posts
            [create_posts] => edit_posts
        )

)

Note 1: that the object's attribute names are slightly different than the arguments expected for the register_post_type() function.

Note 2: to get the list of `supports` field, possible solution could be to check :

$GLOBALS['_wp_post_type_features']

Change Log

Source File

get_post_type_object() is located in wp-includes/post.php.

Related

Post Types: register_post_type(), add_post_type_support(), remove_post_type_support(), post_type_supports(), post_type_exists(), set_post_type(), get_post_type(), get_post_types(), get_post_type_object(), get_post_type_capabilities(), get_post_type_labels(), is_post_type_hierarchical(), is_post_type_archive(), post_type_archive_title()

See also index of Function Reference and index of Template Tags.