WordPressで投稿タイプを変更する方法(タクソノミー含)

Pocket

カスタム投稿タイプを変更することがあるときの備忘録。
必ず始めにバックアップを取ることを勧める。

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

例えば、post_typeA からpost_typeB へ変更する。簡単なのは、Custom Post Type UIプラグインとPost Type Converterプラグインを使う。

  1. プラグインをインストールし、有効にする
  2. Custom Post Type UIを使って、post_typeBを作成
  3. Post Type Converterを使って、post_typeAをpost_typeBへ一括変換
  4. 不要となったpost_typeAを削除する
  5. (個人的にはカスタム投稿タイプの定義をプラグインに頼りたくないので、register_post_type()でカスタム投稿タイプを定義しなおし、Custom Post Type UIのを削除する。Post Type Converterプラグインを削除する)

カスタムタクソノミーの変更

post_typeAで使っていたタクソノミー:typeA_cat を、typeB_cat に変更する方法を説明する。

  1. カスタムタクソノミーを定義する(Custom Post Type UIないしregister_taxonomy()を使って、post_typeBと紐付ける)
  2. これを簡単にしてくれるプラグインがなかったので、DBを直接書き換える。phpmyadminなりqueryなりで、以下のようなクエリーを実行する。
    UPDATE hoge_term_taxonomy SET taxonomy = 'typeB_cat' WHERE taxonomy = 'typeA_cat'
    
  3. 設定→パーマリンク設定のページを一回アクセスする (flush_rewrite_rules()を一回叩くため)

リンクのリダイレクト処理

過去のリンク等を参照されると、ちゃんとredirectするように、.htaccessでredirect処理する。permalinkの設定で %category% を使っていると、404になってしまう。そのredirect処理は例えば

RewriteRule ^post_typeA/(.*) http://your-url/post_typeB/$1 [R=301,L]

のように、必要に応じて設定する。これを.htaccess内の # BEGIN WordPress と # END WordPress の間に書くと、パーマリンク設定をしたときに上書きされてしまうので、その外に記述すること。

サイトマップ再構築

  • サイトマップ構築用プラグインなどを使って、サイトマップを再構築する。
  • Google Webmaster Toolsなどで、再構築したものをアップする。