WordPress 自带评论功能而且可以在后台打开/关闭评论,有时候我们需要根据评论是否打开来决定显示一些信息,比如评论打开则显示评论框,评论关闭则不显示评论框等。那么我们应该如何判断当前文章是否打开(允许)评论呢?这个时候就需要用到 comments_open()函数了,今天就重点跟大家介绍一下 comments_open()函数。
comments_open()函数介绍
查询当前帖子是否打开(允许)评论。
comments_open( int|WP_Post $post_id = null )
参数:
$post_id(int|WP_Post):(可选)Post ID 或 WP_Post 对象,默认为当前文章,默认值:null。
结果:
(布尔)如果打开(允许)评论则返回 true。
函数所在文件: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 );
return apply_filters( 'comments_open', $open, $post_id );
}
comments_open()函数使用示例
示例:仅当我们看到单个帖子并且当前帖子已打开评论时才使脚本入队
/**
* 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' );
示例:为自定义字段“Allow Comments”的文章打开评论
当我们设置了 WordPress 禁用 X 天以上的帖子但希望部分文章(添加有自定义字段 Allow Comments 的文章)还继续启用评论时的代码。
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 );
以上内容整理自@WordPress – comments_open()