アレアレ

お役立ち情報、お悩み解決情報を発信!

WordPress

Custom Post Type UIで作成した記事とカテゴリーを普通の投稿に統合する手順

Custom Post Type UIで作成した記事とカテゴリーを普通の投稿に統合する手順

今回は、普段WordPressでウェブサイトを運営している人のうち、Custom Post Type UIプラグインで、「カスタム投稿タイプ」や「カスタムタクソノミー」を利用している人に伝えたい情報です。

具体的には、Custom Post Type UIの利用をやめる一方、それで作成した記事とカテゴリを普通の投稿に統合する手順をご紹介します。

Custom Post Type UIの利用をやめることにした背景

まず、今回、Custom Post Type UIの利用をやめることにした背景からご紹介すると、次の通りです。

  • これまでカスタム投稿タイプをフル活用した自作のテーマを利用していた
  • サイトのリニューアルにあたり、市販のテーマを利用することになった
  • 市販のテーマが、カスタム投稿タイプに対応していないため、普通の投稿タイプに統合することにした

以上が、Custom Post Type UIの利用をやめることにした背景です。

これまでは自作のテーマを利用し、そのテーマの中でCustom Post Type UIで定義したカスタム投稿タイプを利用していました。

その自作テーマの運用に限界(具体的にはメンテナンスできる人材がいなくなる)が来てしまい、サイトをリニューアルと同時に、市販のテーマに移行することになったわけです。

ところが、その市販のテーマは、カスタム投稿タイプに対応していませんでした。結果、過去にカスタム投稿タイプで作った記事を、普通の投稿に、統合する必要が出て来ました。

統合したいカスタム投稿タイプの具体例

では、説明をわかりやすくするため、統合したいカスタム投稿タイプの具体例を挙げます。

まず、普通の投稿とは、別に「社長の投稿」というカスタム投稿タイプを定義しています。次の図は、Custom Post Type UIで、その「社長の投稿」の定義を確認しているイメージです。そのカスタム投稿タイプの名前としては、「president_post」と定義しています。

カスタム投稿タイプ「社長の投稿」

また、その「社長の投稿」専用で利用するカスタムタクソノミーとして、「社長のカテゴリー」を定義しています。そのタクソノミー名前は、「president_category」です。

カスタムタクソノミー「社長のカテゴリー」

企業で運営するブログがあり、社長の投稿だけは、「社長ブログ」のようなコーナーを用意して、特別なものとして、扱っていたイメージです。また、「社長の投稿」専用のカテゴリを、カスタムタクソノミーの「社長のカテゴリー」として、用意していました。

普通の投稿タイプの1カテゴリー配下に統合したい

そして、このカスタム投稿タイプ「社長の投稿」とカスタムタクソノミー「社長のカテゴリー」を、市販のテーマに移行後も、普通の投稿として表示できるようにするために、普通の投稿に統合したいわけですね。

統合前

投稿
・カテゴリー
社長の投稿
・社長のカテゴリー

となっている状況を、

統合後

投稿
・カテゴリー ←ここの1カテゴリーとして「社長のブログ」を作り、その配下に社長のカテゴリーを移動する
社長の投稿 ←廃止
・社長のカテゴリー ←廃止

のように変更することを考えています。また、「社長のカテゴリー」を普通のカテゴリーに移行すると同時に、カスタム投稿タイプ「社長の投稿」の記事も、普通の投稿に変更します。

実際に試す前の注意点

今回ご紹介する手順を、実際に試す前の注意点として、次の2つがあります。

  1. 必ずデータベースのバックアップを取り、復元できる状況を作っておくこと
  2. WordPress 4.8.2が前提

これから紹介する手順では、SQLを利用して、WordPressのデータベースの情報を直接書き換えます。そのため、間違えるとデータベースがおかしくなり、WordPressが壊れるリスクがあります。それに備えて、データベースのバックアップを取り、いつでも戻せる状況を作っておいてください。

ちなみに、それが簡単にできるWordPressのプラグインとしては、UpdraftPlus WordPress Backup Pluginがオススメです。このプラグインを使うと、データベースだけの復元も簡単に行えます。

また、今回の手順は、WordPressのバージョンとして、4.8.2を利用する前提です。というのも、WordPressのデータベースは、そのバージョンによって、そのテーブル定義が変わることがあるからです。

カスタム投稿タイプとカテゴリーを普通の投稿に付け替えるSQLの例

では、上記の注意点に気をつけている前提で、カスタム投稿タイプ「社長の投稿」とカスタムタクソノミー「社長のカテゴリー」を、普通の投稿に統合する手順をご紹介します。

まず再度、整理しますと、今、統合したいカスタム投稿タイプとカスタムタクソノミーは次の通りです。

  • 社長の投稿 (名前: president_post)
  • 社長のカテゴリー (タクソノミーの名前: president_category)

これを「社長の投稿」は普通の投稿に、「社長のカテゴリー」は普通のカテゴリー配下に、統合します。

具体的なその方法として、phpMyAdminなどのデータベース管理ツールを利用して、該当するWordPressのデータベースに、次のSQLを実行すると、実現できます。

-- 普通のカテゴリに統合先の親カテゴリを作る
INSERT INTO wp_terms (`name`, slug)  Values ('社長ブログ','president_category');
INSERT INTO wp_term_taxonomy (term_id, taxonomy, description) Values (LAST_INSERT_ID(),'category', '');
-- カスタムカテゴリーを普通のカテゴリーに変更、また「社長のブログ」を親カテゴリーに設定する
UPDATE wp_term_taxonomy SET taxonomy = 'category', parent=LAST_INSERT_ID() WHERE taxonomy='president_category';
-- カスタム投稿タイプを普通の投稿タイプに変更する
UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'president_post';

では、このSQLが何をしているかを解説します。

まず、「社長ブログ」というカテゴリーを、普通のカテゴリーに作っています。次に、カスタムタクソノミー「社長のカテゴリー」を普通のカテゴリー(category)に変更しつつ、その親カテゴリーとして、先ほど作った「社長ブログ」に設定しています。

そして、これまで作成した記事のうち、カスタム投稿タイプ「社長の投稿」として作った記事を、普通の投稿タイプに変更しています。

ご参考として、最後に、SQL実行前と実行後のWordPressの管理画面の変化をご紹介します。

SQL実行前

SQL実行前の普通のカテゴリーには、「未分類」以外何もない状態です。

SQL実行前の普通のカテゴリー

そして、カスタムタクソノミー「社長のカテゴリー」には、「連絡」というカテゴリーが1つある状況です。

SQL実行前の社長のカテゴリー

SQL実行後

SQL実行後の普通のカテゴリーを見てみると、次の通り、これまで「社長のカテゴリー」にあった「連絡」が、普通のカテゴリーの「社長のブログ」配下に移行していることが確認できます。

SQL実行後の普通のカテゴリー

場合によって、SQL実行後に、WordPressの管理画面上で、普通のカテゴリーが正しく表示されないこと(この例で言うと、社長のブログの配下に「連絡」があるはずなのに表示されない状況)があります。その場合は、任意のカテゴリーを編集して、何もせず保存すると、正常に表示されます。

また移行したカテゴリーと記事の関連付けは、変わっていません。その事実は、移行後のカテゴリーで記事を絞って表示してみると確認できます。つまり、カテゴリーを移行しても、記事を振り分け直す手間は、発生しません。

Return Top