如何对已注销的用户隐藏所有评论

时间:2013-04-19 作者:Haymanpl

有没有办法删除已发布的评论,以便对注销的用户隐藏这些评论?

3 个回复
SO网友:chrisguitarguy

我建议您查找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\');
为什么要这样做?更加灵活。

想在某些帖子上显示评论吗?上面的前两个选项不允许这样做(如果不进行一些重构)。使用您自己的过滤器可以为您未来的自己或最终用户(如果您正在发布主题)提供更大的可扩展性。

SO网友:fuxia

基于older article, 我会这样做:

<?php # -*- coding: utf-8 -*-
/* Plugin Name: Show comments after login */

if ( ! function_exists( \'wpse_96406_comments_after_login\' ) )
{
    add_filter( \'comments_template\', \'wpse_96406_comments_after_login\', 11 );

    function wpse_96406_comments_after_login( $comments_template )
    {
        return is_user_logged_in() ? $comments_template : __FILE__;
    }
}
注意:这必须是一个独立的插件;不要将此代码放入主题中。

但您也可以搜索comments_template() 在您的主题中,并将其包装为条件。

SO网友:Brad Dalton

谢谢我在从Genesis中删除注释表单的基础上,自己编写了自定义函数来解决这个问题。

结束

相关推荐

不能选中“Allow Comments”框

我已经注册了一个自定义帖子类型,确保“支持”中有“评论”,并且允许在“设置”->“讨论”下的新帖子上发表评论。我确实看到了允许评论和允许回溯/ping的复选框。如果我选中“允许评论”,则更新/发布帖子,it automatically gets unchecked.我不知道为什么。我找到的唯一解决方案是通过SQL查询。我可以在保存后添加一个操作来运行查询,但我想知道问题出在哪里。register_post_type( \'ott_products\', array(