我正在尝试向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=yes
和default=NULL
. 作为SQL的新手,我不太清楚自己在做什么。
我做错了什么?
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来存储此信息。