is_singular( string|string[] $post_types = '' )

Determines whether the query is for an existing single post of any post type (post, attachment, page, custom post types).

Description Description

If the $post_types parameter is specified, this function will additionally check if the query is for one of the Posts Types specified.

For more information on this and similar theme functions, check out the Conditional Tags article in the Theme Developer Handbook.

See also See also

Top ↑

Parameters Parameters


(string|string[]) (Optional) Post type or array of post types to check against.

Default value: ''

Top ↑

Return Return

(bool) Whether the query is for an existing single post or any of the given post types.

Top ↑

Source Source

File: wp-includes/query.php

function is_singular( $post_types = '' ) {
	global $wp_query;

	if ( ! isset( $wp_query ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' );
		return false;

	return $wp_query->is_singular( $post_types );

Top ↑

Changelog Changelog

Version Description
1.5.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 2 content
    Contributed by Codex

    Custom Post Types

    When any of the following return true: is_single(), is_page() or is_attachment().


    True when viewing a post of the Custom Post Type book.

    is_singular( 'book' );

    True when viewing a post of the Custom Post Type newspaper or book.

    is_singular( array( 'newspaper', 'book' ) );
  2. Skip to note 5 content
    Contributed by stevenlinx

    Usage With Hook in Custom Function

    You can use the conditional tag in a custom function with a WordPress or theme specific hook in your functions file.

    add_action( 'loop_start', 'your_function' );
    function your_function() {
    if ( is_singular() ) {
    echo 'Hello World';

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