get_post_format( int|WP_Post|null $post = null ): string|false

Retrieve the format slug for a post

Parameters

$postint|WP_Post|nulloptional
Post ID or post object. Defaults to the current post in the loop.

Default:null

Return

string|false The format if successful. False otherwise.

More Information

This will usually be called in the the loop, but can be used anywhere if a post ID is provided.

The set of currently defined formats are:

  • aside
  • chat
  • gallery
  • link
  • image
  • quote
  • status
  • video
  • audio

Note also that the default format (i.e., a normal post) returns false, but this is also referred in some places as the ‘standard’ format. In some cases, developers may wish to do something like the following to maintain consistency:

$format = get_post_format() ? : 'standard';

Source

function get_post_format( $post = null ) {
	$post = get_post( $post );

	if ( ! $post ) {
		return false;
	}

	if ( ! post_type_supports( $post->post_type, 'post-formats' ) ) {
		return false;
	}

	$_format = get_the_terms( $post->ID, 'post_format' );

	if ( empty( $_format ) ) {
		return false;
	}

	$format = reset( $_format );

	return str_replace( 'post-format-', '', $format->slug );
}

Changelog

VersionDescription
3.1.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Usage in Templates

    /*
     * Pull in a different sub-template, depending on the Post Format.
     * 
     * Make sure that there is a default format.php file to fall back to as a default.
     * Name templates format-link.php, format-aside.php, etc.
     *
     * You should use this in the loop.
     */
    get_template_part( 'format', get_post_format() );

You must log in before being able to contribute a note or feedback.