comments_open( int|WP_Post $post_id = null )
Whether the current post is open for comments.
Description Description
Parameters Parameters
Return Return
(bool) True if the comments are open.
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 );
}
Expand full source code Collapse full source code View on Trac
Changelog Changelog
| Version | Description |
|---|---|
| 1.5.0 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
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' );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 );Expand full source codeCollapse full source code
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 );Expand full source codeCollapse full source code