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などで、再構築したものをアップする。

この投稿へのコメント

  1. ぷん said on 2013年1月11日 at 12:13 PM

    参考にさせていただきました。
    ありがとうございました。
    「カスタムタクソノミーの変更」の2
    AとBが逆なはず・・・です!

  2. ykawato said on 2013年1月11日 at 12:18 PM

    ぷんさん、ご指摘ありがとうございます!
    修正しました。

  3. ナカヤマ said on 2018年3月8日 at 7:39 PM

    カスタムポストタイプのスラッグを変更する必要があり、その際、大変参考になりました。
    短時間でうまくいきました。感謝です!
    私のケースでは、Custom Post Type UI は使わず
    functions.php 上でカスタム投稿タイプ(付随するタクソノミーの設定も)の宣言を複製し
    関連するテンプレートの名称や内部関数も置換、
    ACFやRedirection、パーマリンクも同等に設定しなおして、
    同じ器を作ってから Post Type Converter で移行しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

  1. 2014 WordPress プラグイン 50選 said on 2014年3月12日 at 7:15 PM

    […] ダウンロード先:https://wordpress.org/plugins/post-type-converter/ 参考:WordPressで投稿タイプを変更する方法(タクソノミー含) […]

トラックバック URL