comments_open( int|WP_Post $post_id = null )

Whether the current post is open for comments.


Description Description


Parameters Parameters

$post_id

(int|WP_Post) (Optional) Post ID or WP_Post object. Default current post.

Default value: null


Top ↑

Return Return

(bool) True if the comments are open.


Top ↑

Source Source

File: wp-includes/comment-template.php

function comments_open( $post_id = null ) {

	$_post = get_post($post_id);

	$post_id = $_post ? $_post->ID : 0;
	$open = ( 'open' == $_post->comment_status );

	/**
	 * Filters whether the current post is open for comments.
	 *
	 * @since 2.5.0
	 *
	 * @param bool $open    Whether the current post is open for comments.
	 * @param int  $post_id The post ID.
	 */
	return apply_filters( 'comments_open', $open, $post_id );
}

Top ↑

Changelog Changelog

Changelog
Version Description
1.5.0 Introduced.


Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note content
    Contributed by Codex

    Enqueuing a script only if we’re seeing a single post and comments are open for the current post

    /**
     * Enqueue wpdocs_script if viewing a post with comments enabled.
     */
    function wpdocs_scripts(){
    	if ( is_single() && comments_open() ) {
    		// wpdocs_script must have been previously registered via wp_register_script()
    		wp_enqueue_script( 'wpdocs_script' );
    	}
    }
    add_action( 'wp_print_scripts', 'wpdocs_scripts' );
    
  2. Skip to note content
    Contributed by Codex

    With this code you can always disable comments on pages, assuming your theme uses comments_open() to check if the comments are open.
    Note: Comments are disabled on pages by default in 4.3+.

    /**
     * Disable comments on pages.
     *
     * @param bool $open    Whether comments should be open.
     * @param int  $post_id Post ID.
     * @return bool Whether comments should be open.
     */
    function wpdocs_comments_open( $open, $post_id ) {
    	$post = get_post( $post_id );
    	if ( 'page' == $post->post_type )
    		$open = false;
    	return $open;
    }
    add_filter( 'comments_open', 'wpdocs_comments_open', 10, 2 );
    
  3. Skip to note content
    Contributed by Codex

    With this code you can enable comments on a post that has custom field “Allow Comments” set to 1.

    This is helpful when you have told WordPress to disable comments for posts that are older than X days but wish to enable comments for a handful of old posts.

    /**
     * Enable or disable comments based on custom field Allow Comments.
     *
     * @param bool $open    Whether comments should be open.
     * @param int  $post_id Post ID.
     * @return bool Whether comments should be open.
     */
    function wpdocs_comments_open( $open, $post_id ) {
    	$post = get_post( $post_id );
            if (get_post_meta($post->ID, 'Allow Comments', true)) {
    		$open = true;
    	}
    	return $open;
    }
    add_filter( 'comments_open', 'wpdocs_comments_open', 10, 2 );
    

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