LoginSignup
2
0

More than 3 years have passed since last update.

WordPressをSQLで色々変換するクエリ

Posted at

めったにないのですが、たまにあるのが投稿タイプの変更だったり、一括でカテゴリーをつけたりする事がありますね。
豆腐を買い忘れたくらいの感じでそういうオーダーが来ますよね。

そんな時にsqlから一括更新すると楽なので、いくつかメモしておきます。
自分はphpMyAdminのSQLに貼り付けて更新してます。(変更前にバックアップ必須です)

カスタム投稿タイプの変更

Use SQL Query In phpMyAdmin To Change Custom Post Types in WordPress

UPDATE `wp_posts` SET `post_type` = 'photos' WHERE `post_type` = 'members';

投稿タイプ「members」を「photos」へ変更します。通常投稿から変更する場合は、whereのところを「post」ですね。

taxonomy名の変更

https://wordpress.stackexchange.com/questions/1037/renaming-custom-post-types-and-taxonomies

UPDATE  `wp_term_taxonomy` SET  `taxonomy` =  'new_taxonomy_name' WHERE  `taxonomy` = 'old_taxonomy_name';

こちらはタクソノミーの変更です。通常投稿のカテゴリーからカスタムタクソノミーへ変更する時に使います。カスタム投稿タイプの変更とセットでよく利用しますね。

特定のカテゴリーに属する投稿を任意のカスタム投稿タイプに変換する SQL

https://gist.github.com/wokamoto/4159068

update wp_posts
set post_type = 'faq'
where post_type = 'post'
and exists
(select object_id
from wp_term_taxonomy as t
inner join wp_term_relationships as r on t.term_taxonomy_id = r.term_taxonomy_id
where t.term_id = 2
and r.object_id = wp_posts.ID);

上記例は、カテゴリーID「2」に属する通常投稿を、カスタム投稿タイプ「faq」へ変更します。
この後、term_id 2のtaxonomyをcategoryからfaq_categoryとかに変更します。

上記の反対(任意のカスタム投稿タイプを通常投稿、特定のカテゴリーに変換)

INSERT INTO wp_term_relationships SELECT id,7,0 FROM wp_posts WHERE `post_type` = 'announcement';
UPDATE `wp_posts` SET `post_type` = 'post' WHERE `post_type` = 'announcement';

最初にカテゴリーをセットして、そこから変換します。
カテゴリーをセットしてある場合は、先ほどのを利用出来ます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0