Languages: English • 日本語 (Add your language)
This Conditional Tag checks if comments are allowed for the current Post or a given Post ID. This is a boolean function, meaning it returns either TRUE or FALSE.
<?php comments_open( $post_id ); ?>
With this code you can always disable comments on pages, assuming your theme uses comments_open() to check if the comments are open.
add_filter( 'comments_open', 'my_comments_open', 10, 2 );
function my_comments_open( $open, $post_id ) {
$post = get_post( $post_id );
if ( 'page' == $post->post_type )
$open = false;
return $open;
}
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.
add_filter( 'comments_open', 'my_comments_open', 10, 2 );
function my_comments_open( $open, $post_id ) {
$post = get_post( $post_id );
if (get_post_meta($post->ID, 'Allow Comments', true)) {$open = true;}
return $open;
}
Enqueuing a script only if we're seeing a single post and comments are open for the current post
add_action( 'wp_print_scripts', 'myplugin_scripts' );
function myplugin_scripts(){
if ( is_single() && comments_open() ) {
// myplugin_script must have been previously registered via wp_register_script()
wp_enqueue_script( 'myplugin_script' );
}
}
Since: 1.5.0
comments_open() is located in wp-includes/comment-template.php.