仅允许在自定义帖子类型中使用匿名评论

时间:2017-12-20 作者:aitor

是否可以在CPT中允许匿名评论?我的意思是,这个配置:

允许注册用户进行全局评论

1 个回复
最合适的回答,由SO网友:Kieran McClung 整理而成

也许有更好的方法解决这个问题,但我允许在整个网站上发表评论,并确保您的自定义帖子类型支持评论:

<?php 
register_post_type( \'custom\', array(
    // ..
    supports => array(
        \'comments\',
    ),
) );
?>
然后将以下函数添加到functions.php 文件:

function hide_comment_form( $post_type = \'custom\' )
{
    // If user is logged in return false
    if ( is_user_logged_in() ) {
        return false;
    } else {

        // Else check for special post type
        // If on custom post type single return false           
        if ( is_singular( $post_type ) ) {
            return false;
        }

        // Else return true (hide the form)
        return true;
    }
}
然后你可以把你的comment_form() 模板中的代码如下所示:

if ( ! hide_comment_form() ) {
    comment_form();
}
当用户未登录时,该函数将始终隐藏注释表单,除非注释表单出现在自定义帖子类型页面上。

如果不想编辑模板文件,还可以将以下内容添加到functions.php 文件:

function comment_form_before_function()
{
    if ( hide_comment_form() ) {
        echo \'<div style="display: none;">\';
    }
}
add_action( \'comment_form_before\', \'comment_form_before_function\', 1 );

function comment_form_after_function()
{
    if ( hide_comment_form() ) {
        echo \'</div>\';
    }
}
add_action( \'comment_form_after\', \'comment_form_after_function\', 99 );

结束

相关推荐

Conditional tag for comments

如何检查当前循环是否为注释?类似于is_comment().我正在建立一个自定义update_x_meta() 根据类型更新元数据的函数,例如:if ( is_single() || is_attachment() || is_page() ) { // post, page, attachment update_post_meta($id, $meta_data, $meta_value); } elseif (is_author()) { //