is_preview(): bool

Determines whether the query is for a post or page preview.


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

Top ↑


bool Whether the query is for a post or page preview.

Top ↑


File: wp-includes/query.php. View all references

function is_preview() {
	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_preview();

Top ↑


Version Description
2.0.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 1 content
    Contributed by Sybre Waaijer

    is_preview() does NOT check if the user is logged in, or if the user can even edit the post.
    Use current_user_can() for checking roles and capabilities.

    Any visitor can add ?preview=true, ?preview=1, or ?preview=not_false to the URL, and is_preview() will return true.

  2. Skip to note 2 content
    Contributed by giacomolaw
    function comments_template( $file = '/comments.php', $separate_comments = false ) {
    global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity, $overridden_cpage;
    if ( ! ( is_single() || is_page() || $withcomments ) || empty( $post ) ) {
    if ( is_preview() ) {

    Useful to stop comments showing in the preview, especially if you use Disqus Conditional Load. This made the preview work for me, as DCL stopped them from working. Add this to wp-includes/comment-template.php.

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