【问题标题】:Automatically close comments on articles older than X days also hides comments自动关闭超过 X 天的文章的评论也会隐藏评论
【发布时间】:2014-10-25 00:21:16
【问题描述】:

我正在使用 WordPress 4.0。

我的目标是在超过 14 天的帖子上禁用新的 cmets,但在允许的时间范围内创建的现有 cmets 仍然可见。

在设置->讨论中,有一个选项“自动关闭超过 x 天的文章的 cmets”。我已选择此选项,并将 x 设置为 14 天。

我认为这只会关闭超过 14 天的帖子的 cmets,但它也会隐藏超过 14 天的帖子的 cmets。

我检查了主题的 cmets.php 文件,我没有看到任何表明隐藏 cmets 的主题。

我对 Stack Overflow 比较陌生。我整天用谷歌搜索这个问题,并搜索了 Stack Overflow,但找不到答案。所以我想我的问题是,如果导致这种行为的代码不在 cmets.php 中,它会在哪里?

谢谢。

【问题讨论】:

  • 那很奇怪,你用的是什么主题?
  • @Anand 我希望我可以删除我的愚蠢帖子。当然,我在发布后想出了答案。我正在使用 Bluthemes 的 Vivid。问题不在 cmets.php 中。问题出在 single.php 中。在 single.php 的末尾,有一个对 cme​​ts_template() 的调用,但前提是 cmets 是打开的。在 cmets 已关闭的情况下没有 else 语句,因此如果 cmets 已关闭,则不会调用 cmets_template()。我不得不在single.php 中添加一个else 语句,我认为这解决了它。也许这会对使用 Vivid by Bluthemes 的人有所帮助...

标签: wordpress comments


【解决方案1】:

如果您想在特定天数后禁用帖子中的 cmets,您可以使用此代码。将此代码放入主题的 functions.php 文件中。

<?php function autoclose_comments() {
    global $wpdb, $tableposts;

    if (!isset($tableposts))
        $tableposts = $wpdb->posts;

        $age = '21 DAY';

        $date = $wpdb->get_var("SELECT DATE_ADD(DATE_SUB(CURDATE(), INTERVAL $age), INTERVAL 1 DAY)");
        $wpdb->query("UPDATE $tableposts SET comment_status = 'closed' WHERE comment_status = 'open' AND post_status = 'publish' AND post_date < '$date'");
}

您可以根据需要设置$age

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多