我建议您查找comments_template
并将它们包装在is_user_logged_in
条件。
示例:
<?php
if (is_user_logged_in()) {
comments_template();
}
或者,您可以打开主题
comments.php
(或同等的,通常是
comments.php
) 在顶部添加类似的内容:
<?php
if (!is_user_logged_in()) {
return;
}
PHP允许您提前返回文件,这样您就可以像上面那样从包含中“退出”。如果需要为未登录用户删除所有帖子类型的评论,第二个选项可能是最好的。如果您在某些帖子类型上有条件地需要它,那么第一种是最好的。
然而,最好的解决方案是使用自己的过滤器。而不是打电话is_user_logged_in
直接拨打apply_filters
默认情况下,使用唯一名称并返回try。
<?php
// somewhere before all the other stuff in comments.php
if (!apply_filters(\'wpse96406_show_comments\', true)) {
return;
}
然后在
functions.php
, 钩住自己的过滤器并修改其行为方式。
<?php
add_filter(\'wpse96406_show_comments\', \'is_user_logged_in\');
为什么要这样做?更加灵活。
想在某些帖子上显示评论吗?上面的前两个选项不允许这样做(如果不进行一些重构)。使用您自己的过滤器可以为您未来的自己或最终用户(如果您正在发布主题)提供更大的可扩展性。