-1

我有 wordpress 博客,并且在某些帖子下有大量评论。最近发现有些评论重复了两三遍。我想使用 php 代码从 Wordpress 的 mysql 数据库中删除表 wp_comments 中的重复元素(通过在服务器上打开 php 文件)。我使用了这段代码:

<?php
include_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php' );
global $wpdb;

$comments = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."_comments"
   ." ORDER BY comment_post_ID, comment_content");

$prev = NULL;

foreach($comments as $comment) {

  if ($prev && $prev->comment_content == $comment->comment_content
    && $prev->comment_post_ID == $comment->comment_post_ID ) {

    $wpdb->query("DELETE FROM ".$wpdb->prefix."_comments WHERE comment_ID == ".$comment->comment_ID);

  }
  else
    $prev = $comment;
}
?>

我得到了这个错误:

*> 致命错误:在第 5 行的 .../commentsremoving.php 中调用非对象的成员函数 get_results()*

更新:

感谢 Sheikh Heera,我现在没有错误消息,但我的代码不起作用 - 没有删除重复的评论。任何想法为什么?

4

3 回答 3

2

每当您想在您之外使用 WordPress 的功能时,WordPress都可以使用

include_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php' );

然后你就可以使用 WordPress 的功能了。检查这个。如果您只想访问数据库功能,那么

require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/wp-db.php' );
if (!$wpdb) {
    $wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
} else {
    global $wpdb;
}
于 2013-06-17T18:57:35.730 回答
0

在第 5 行之后的代码中粘贴以下内容。脚本现在是否在页面中显示任何错误?

$wpdb->print_error(); 
于 2013-06-17T18:53:51.090 回答
0

我的猜测是你不需要这个文件顶部的 wp-load.php 。要加载 WordPress 以便您可以使用其全局变量和函数,此文件是必需的。尝试将其放在文件顶部的全局变量之前:

require( '/path/to/wp-load.php' );
于 2013-06-17T18:56:08.473 回答