使用wp_INSERT_COMMENT防止重复注释

时间:2014-12-25 作者:Shady M Rasmy

我正在尝试将facebook评论导入WordPress,我所做的是获取facebook帖子的图表,json解码,然后通过此代码导入评论

到目前为止,我的代码是

foreach($comm_no as $answer_id => $v) {
$time = current_time(\'mysql\');
$data = array(
\'comment_post_ID\' => $post->ID,
\'comment_author\' => $v->from->name,
\'comment_author_email\' => \'\',
\'comment_author_url\' => \'https://www.facebook.com/\'.$v->from->id,
\'comment_content\' => $v->message,
\'comment_type\' => \'\',
\'comment_parent\' => 0,
\'user_id\' => 5,
\'comment_author_IP\' => \'127.0.0.1\',
\'comment_agent\' => \'egysp.com\',
\'comment_date\' => $time,
 \'comment_approved\' => 1,
);
wp_insert_comment($data);`
这段代码在我的单个php中

问题是每次访问帖子时,都会再次导入评论,所以我有1000条重复评论

有人能帮我吗?

1 个回复
最合适的回答,由SO网友:Privateer 整理而成

Please Note: 这样做会很慢!最好改为执行以下操作之一(或最好同时执行两者):

使用wp\\u cron定期执行此操作,而不是在完成后第一次在选项表中设置的时间戳运行时获取所有注释。每次之后,阅读时间戳并抓取自时间戳以来所做的评论。。。并在完成时更新时间戳

That being said:

要做到这一点,您应该在添加注释之前检查重复项,这需要确定什么是重复注释。

假设author\\u url和注释本身可以工作,您可以执行以下操作:

function my_comment_already_exists($author_url, $comment) {
    $already_exists = false;
    global $wpdb;
    # try grabbing the first 40 characters of the comment. Hopefully that will make it unique
    # also changed select from 1 as it_exists to comment_ID in case prepare broke that part
    $comment_bit = substr($comment, 0, 40);
    $like_bit = $wpdb->esc_like( $comment_bit ) . \'%\';
    $query = "SELECT comment_ID FROM {$wpdb->prefix}comments WHERE comment_author_url = %s AND comment_content LIKE %s";
    $query = $wpdb->prepare( $query, $author_url, $like_bit );
    $results = $wpdb->get_results( $query );
    if ( is_null($results) ) {
       # error
       if ( $wpdb->last_error ) {
           echo "<p>Error: {$wpdb->last_error}</p>";
       }
    } else if ( is_array($results) && 0 < count($results) ) {
        $already_exists = true;
    }
    return $already_exists;
}
然后,对于每个评论,您可以执行以下操作:

if ( !my_comment_already_exists( \'https://www.facebook.com/\'.$v->from->id, $v->message ) ) {
    wp_insert_comment($data);
}

结束

相关推荐

如何在自定义主题的标题中添加附件的Facebook OpenGraph元标记?

当标题已经被调用,并且需要添加的值在正文中获得时,如何在标题中添加Facebook OpenGraph标记?这是一个高度定制的主题(我没有创建)。这是image.php 包含图像附件页的文件: <div class=\"posted-att\"> <?php echo wp_get_attachment_image($attachment_id,\'large\'); 我不知道在哪里$attachment_id 已设置。它没有设定imag