我的注释中包含此代码。php:
<?php
// If CPT and not logged in, display a message:
if ( \'CPT\' == get_post_type() && ! is_user_logged_in() ) {
echo \'<p class="must-log-in" style="padding-left:20px; font-size:20px;">You must be logged in to post a comment.\' . \'</p>\';
echo do_shortcode("[upme_login]");
}
?>
此代码:
<?php
// Don\'t output the comment form if CPT and user isn\'t logged in
if ( \'CPT\' != get_post_type() || ! array_key_exists( \'comments\', $wp_query->query_vars ) ) {
comment_form();
}
?>
当用户未登录时,应显示如下消息
You must be logged in.... 也就是说,
but 我也看到了评论表,这通常是我不应该看到的。
如果我删除此|| ! array_key_exists( \'comments\', $wp_query->query_vars )
一切正常。
如果用户已登录,如何使其可见?
怎么了?
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
在代码的第一个版本中,不检查用户是否登录。
在第二次尝试中,我想你的逻辑是错误的。
因此,您的代码应该如下所示:
<?php
// If CPT and not logged in, display a message:
if ( \'CPT\' == get_post_type() && !is_user_logged_in() ) {
echo \'<p class="must-log-in" style="padding-left:20px; font-size:20px;">You must be logged in to post a comment.\' . \'</p>\';
echo do_shortcode(\'[upme_login]\');
}
?>
...
<?php
if ( \'CPT\' != get_post_type() || (is_user_logged_in() && array_key_exists( \'comments\', $wp_query->query_vars )) ) {
comment_form();
}
?>
此代码将:
显示消息“您必须…”如果用户未登录并且正在查看CPT在其他帖子类型上不显示此类消息
仅当用户登录时才在CPT上显示评论表单始终在其他帖子类型上显示评论表单