Extending the database

时间:2013-09-07 作者:Twifty

我正在尝试向comments数据库中添加一个额外的列,该列将存储帖子/页面作者的用户ID。这是插件的一部分,该插件将显示新评论以回复帖子或其他评论。据我所知,Wordpress没有内置此功能,而是将评论放在一个大组中。我希望用户只快速看到与自己相关的评论。

require_once(ABSPATH . \'wp-admin/includes/upgrade.php\');
global $wpdb;
$wpdb->show_errors();       
$query = "ALTER TABLE $wpdb->comments ADD replyto_who bigint(20)";
if ( maybe_add_column($wpdb->comments,\'replyto_who\',$query) ) {
    $query = "SELECT comment_post_ID,comment_ID FROM $wpdb->comments WHERE replyto_who IS NULL";
    $results = $wpdb->get_results($query);
    foreach ( $results as $result ) {
        $user_id = $wpdb->get_var( "SELECT post_author FROM $wpdb->posts WHERE ID = $result->comment_post_ID" );
        if ( isset($user_id) )
            $wpdb->query("UPDATE $wpdb->comments SET replyto_who=\'$user_id\' WHERE comment_ID=$result->comment_ID");
    }
}
请注意,以上代码仅用于测试。

我遇到的问题是,即使上面的代码没有运行,在输入新注释后,新条目总是被赋予值“1”。使用查看表结构phpMyAdmin 我看到这个专栏有Null=yesdefault=NULL. 作为SQL的新手,我不太清楚自己在做什么。

我做错了什么?

1 个回复
SO网友:Jeff Rose

我不知道你为什么得了1分。你的代码说你不应该这样做。然而,你所做的似乎是不必要的,而且通常是不明智的。通常不需要修改现有表。

wp\\u comments表包含comment\\u parent和user\\u id列。

因此,如果我回复一条评论,它的直接父ID位于comment\\u parent中,如果他们登录,则该评论的作者ID位于user\\u ID中(否则为0)。

如果我误解了,您也可以使用wp\\u commentmeta来存储此信息。

结束

相关推荐

从现有MySQL安装程序迁移到WordPress

我当前有一个具有以下架构的数据库:表:文章列:ID、标题、作者、内容表:作者列:ID、AuthorName、EmailAddress表:类别列:ID、CategoryName我有兴趣把这个转移到WordPress上。我实际上不需要保留authors或categories表,因为我们正在迁移中修改这些部分。但是,我确实需要保存articles表的某些行(或者所有行,如果更容易的话)。这包括保持作者ID与之链接。我愿意手动查询,以选择要移到新表的行,但我不确定应该在哪里执行此操作。因此,我的问题是:如何以最简