【问题标题】:Deleting all comment data from WordPress从 WordPress 中删除所有评论数据
【发布时间】:2011-08-19 00:02:04
【问题描述】:

我已经使用 SQL 命令从我的 WordPress 站点中删除了所有 cmets,wp_cmets 和 wp_commentmeta 都是空的。

这已经删除了所有的 cmets,但我目前遇到的问题是它仍然显示旧的评论号,使用:<?php comments_number('0 Comments','1 Comment','% Comments'); ?>

例如,即使这些 cmets 不存在,帖子仍将显示:“4 条评论”。

有什么想法可以解决这个问题吗?

感谢任何帮助。

问候。

【问题讨论】:

    标签: php mysql sql database wordpress


    【解决方案1】:

    您还需要将 wp_posts 中的 comment_count 字段重置为“0” - 它将其存储在该表中,因此不必每次都从 cmets 表中进行计数....

    编辑(基于评论):

    你可以运行一个非常简单的查询:

    UPDATE wp_posts set comment_count = 0

    小心 :) 这没有 where 子句(过滤器),所以一旦你这样做就没有回头路了。它将更新您的所有帖子以使评论计数为“0”。如果您可以备份您的数据库,那就太好了。

    另外,取决于您用于运行查询的工具,您可能需要输入数据库名称:

    UPDATE yourdbname.wp_posts set comment_count = 0

    【讨论】:

    • 感谢您的快速回复,不知道您对SQL很熟悉吗?如果你知道如何大规模做到这一点,那就太好了。
    【解决方案2】:

    我不建议直接从数据库中删除。由于数据可能具有依赖关系,因此最终可能会出现孤立记录。你的情况可能就是这样。

    下次,如果想从帖子中删除评论,请使用帖子 ID(将其添加到 ADDPOSTID),保存下面的脚本并将 PHP 文件添加到您的 WordPress 网站的根目录中,以管理员身份登录并直接在浏览器上调用该文件:

    <?php
    
    require('./wp-load.php');
    
    if ( current_user_can( 'manage_options' ) ) {
        if ( $comments = get_comments( array( 'post_id' => ADDPOSTID ) ) ) {
            foreach ( $comments as $comment ) {
                echo '<p>Deleting comment '.$comment->comment_ID.'</p>';
                wp_delete_comment( $comment->comment_ID, true );
            }
        } else {
            echo '<p>No comments found</p>';
        }
    } else {
        echo '<p>Not allowed</p>';
    }
    

    这也可能有助于解决当前的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多