The get_post_type() WordPress PHP function retrieves the post type of the current post or a given post.
Usage
get_post_type( $post );
Example:
$post_type = get_post_type( 42 ); // Retrieves the post type of the post with ID 42
Parameters
$post
(int|WP_Post|null) – Optional. Post ID or post object. Default is global$post
. Default: null
More information
See WordPress Developer Resources: get_post_type()
Examples
Check if a post is a custom post type
Check if the post with ID 42 is of type ‘custom_post_type’:
if ( get_post_type( 42 ) == 'custom_post_type' ) { // Do something if the post is of type 'custom_post_type' }
Display the post type
Display the post type of the current post inside The Loop:
printf( __( 'The post type is: %s', 'textdomain' ), get_post_type() );
Get post type of the current queried object
When outside The Loop, you may need to pass get_queried_object_id()
as a parameter to get the post type of the current queried object:
$current_queried_post_type = get_post_type( get_queried_object_id() );
Get the post type and run a function based on the post type
Run different functions based on the post type of the current post:
switch ( get_post_type() ) { case 'post': my_post_function(); break; case 'page': my_page_function(); break; default: my_default_function(); }
Filter posts based on post type
Use get_post_type()
to filter posts in a custom WP_Query based on their post type:
$args = array( 'post_type' => 'custom_post_type', 'posts_per_page' => 10, ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // Display the custom_post_type content here } wp_reset_postdata(); }