在新数据库表中插入所有帖子ID

时间:2010-12-05 作者:wpStudent

我有一个插件,可以创建一个新的数据库表。激活插件后,是否有办法将我的所有帖子ID插入该表?

现在,我正在使用一个动作挂钩来立即插入我发布的新帖子的id。

function transfer_post_id($post_ID)  {
global $wpdb;
   if (!($wpdb->get_row("SELECT post_id FROM $my_table WHERE post_id = $post_ID" ) ) ) { //if post id not already added
      $wpdb->insert( $my_table, array( \'post_id\' => $post_ID ) );      
   }
   return $post_ID;
}

add_action ( \'publish_post\', \'transfer_post_id\' );
然而,在激活插件之前,我需要一种无需手动更新每个插件即可插入的方法。

2 个回复
最合适的回答,由SO网友:Denis de Bernardy 整理而成

Like so:

INSERT INTO $mytable (post_id)
SELECT ID
FROM $wpdb->posts as posts
LEFT JOIN $mytable as dup_check
ON dup_check.post_id = posts.ID
WHERE dup_check.post_id IS NULL;
SO网友:hakre

您可以通过使用键来设计表,使ID只能存在一次。然后,您可以运行insert into查询,该查询通过子选择直接选择现有ID值。

就像这样(credits Denis):

INSERT INTO $mytable (post_id)
SELECT ID
FROM $wpdb->posts as posts
LEFT JOIN $mytable as dup_check
ON dup_check.post_id = posts.ID
WHERE dup_check.post_id IS NULL;
查看MySql手册中关于INSERT statement.

结束

相关推荐

在single.php中获取下一个帖子

我真的需要你的帮助。在我的单曲里。php我必须在同一类别中获得下一篇帖子(我已经拥有了:$in\\u same\\u cat=真;$excluded\\u categories=“”;$上一个=假;$next\\u post=获取\\u相邻的\\u post($in\\u same\\u cat,$excluded\\u categories,$previous);)现在我需要next next 立柱和相反方向previous previous 邮递thanx公司