WordPress のカテゴリ、サブカテゴリを一括登録する

概要

都道府県や市区町村などサブカテゴリを登録する作業はよく発生すると思いますのでそれを一括で実施する。

環境

  • WordPress 4.7.4
  • 問題

    カテゴリの手動登録もできるが苦行以外の何物でもないわけで1回だけなら根性見せますが・・・繰り返しやるもんじゃないですね。

    対策

    更新が2年前と枯れてるプラグインだがシンプルな構造で分かりやすい Really Simple CSV Importer を利用する。ただし、このプラグインではサブカテゴリの登録ができないので合わせて ORE CSV Importer を利用することで親子関係をもつカテゴリ登録をちゃちゃっとやります。

    Really Simple CSV Importer 自体は投稿データのインポートを用途としているのでカテゴリだけでなく投稿や ACF などもインポートが可能ですが、本稿では移行ではなくあくまでもカテゴリ、サブカテゴリの一括登録を目的とした活用方法を説明します。

    手順

    Really Simple CSV Importer のインストール

    Really Simple CSV Importer からダウンロードするか、WordPress 管理メニューのプラグインから新規追加します。詳細は割愛します。

    ORE CSV Importer のインストール

    GitHub から ORE CSV Importer をダウンロードして wp-content/plugins/ 配下にコピーします。メンドイので wget や curl などを使ってシェルからやったほうが楽かと。

    # cd /path/to/wp-content/plugins/
    # wget wget https://gist.githubusercontent.com/kurozumi/d3e77786eaf145c088b4/raw/87e83c668ece9a288620f12e47cf8baca9d9f64f/ore-csv-importer.php
    

    プラグインページで有効化しておきます。

    インポート用 CSV ファイルの準備

    値を””で囲む必要があるので、テキストエディタや Libre Office で編集します。Excel は作者さん非推奨の模様。繰り返し使えそうなものは作っておくと良いかもしれませんね。
    1行目に親カテゴリは post_category, 子カテゴリは post_child_category としてヘッダエントリを書きます。不動産関連とか、いろいろなサイトに応用がききそうです。

    孫カテゴリを登録できるかは試していません。試した人いたら教えて。そのうち試すかも。都道府県登録用のサンプルファイルを公開しておきますw

    CSV のインポート

    1. [ツール]-[インポート]から「インポーターの実行」リンクをクリック

    インポーターの実行

    インポーターの実行


    2. [ファイルを選択]ボタンを押して作成したインポート用 CSV ファイル、「wp_八地方区分.csv」を指定し、[ファイルをアップロードしてインポート]ボタンをクリック
    ファイルをアップロードしてインポート

    ファイルをアップロードしてインポート


    3. 「すべて完了しました。」とメッセージが出力されていることを確認する
    すべて完了しました。とメッセージが出力されていない場合途中でコケてる可能性があるので登録状況を確認するかやり直しましょうw
    すべて完了しました。

    すべて完了しました。

    結果

    むふふふ。楽ちん&感謝!

    WordPressカテゴリとサブカテゴリの一括登録

    WordPressカテゴリとサブカテゴリの一括登録

    トラブルシューティング

    利用できるリソースに制限のあるレンタルサーバでは一括登録の途中で終了してしまうことがあった。その場合、インポート用 CSV ファイルから登録済みのカテゴリを削除して続きから頑張りましょうw
    ロリポップのスタンダードプラン(私は生涯プラン♪)でもちゃんと動作しましたが何回かに分けて実施する必要があった。自サバでは問題なし。

    失敗した場合のやり直し

    消したくないカテゴリがある場合は利用できないが、まるっとやり直すなら対象テーブルを truncate すれば良い。WordPress のカテゴリは wp_terms と wp_term_taxonomy テーブルに格納されているためこれを truncate する。truncate コマンドでは、AUTO_INCREMENT もリセットされる。

    例)
    サブカテゴリなしで登録されちゃった

    MariaDB [database]> select * from wp_terms;
    +---------+--------------+--------------------------------------+------------+
    | term_id | name         | slug                                 | term_group |
    +---------+--------------+--------------------------------------+------------+
    |       1 | アンテナ     | antenna                              |          0 |
    |       5 | Contributors | contributors                         |          0 |
    |       8 | 北海道       | %e5%8c%97%e6%b5%b7%e9%81%93          |          0 |
    |      11 | 青森県       | %e9%9d%92%e6%a3%ae%e7%9c%8c          |          0 |
    |      14 | 岩手県       | %e5%b2%a9%e6%89%8b%e7%9c%8c          |          0 |
    |      17 | 宮城県       | %e5%ae%ae%e5%9f%8e%e7%9c%8c          |          0 |
    |      20 | 秋田県       | %e7%a7%8b%e7%94%b0%e7%9c%8c          |          0 |
    |      23 | 山形県       | %e5%b1%b1%e5%bd%a2%e7%9c%8c          |          0 |
    |      26 | 福島県       | %e7%a6%8f%e5%b3%b6%e7%9c%8c          |          0 |
    |      29 | 茨城県       | %e8%8c%a8%e5%9f%8e%e7%9c%8c          |          0 |
    |      32 | 栃木県       | %e6%a0%83%e6%9c%a8%e7%9c%8c          |          0 |
    |      35 | 群馬県       | %e7%be%a4%e9%a6%ac%e7%9c%8c          |          0 |
    |      38 | 埼玉県       | %e5%9f%bc%e7%8e%89%e7%9c%8c          |          0 |
    |      41 | 千葉県       | %e5%8d%83%e8%91%89%e7%9c%8c          |          0 |
    |      44 | 東京都       | %e6%9d%b1%e4%ba%ac%e9%83%bd          |          0 |
    |      47 | 神奈川県     | %e7%a5%9e%e5%a5%88%e5%b7%9d%e7%9c%8c |          0 |
    |      50 | 新潟県       | %e6%96%b0%e6%bd%9f%e7%9c%8c          |          0 |
    |      53 | 富山県       | %e5%af%8c%e5%b1%b1%e7%9c%8c          |          0 |
    |      56 | 石川県       | %e7%9f%b3%e5%b7%9d%e7%9c%8c          |          0 |
    |      59 | 福井県       | %e7%a6%8f%e4%ba%95%e7%9c%8c          |          0 |
    |      62 | 山梨県       | %e5%b1%b1%e6%a2%a8%e7%9c%8c          |          0 |
    |      65 | 長野県       | %e9%95%b7%e9%87%8e%e7%9c%8c          |          0 |
    |      68 | 岐阜県       | %e5%b2%90%e9%98%9c%e7%9c%8c          |          0 |
    |      71 | 静岡県       | %e9%9d%99%e5%b2%a1%e7%9c%8c          |          0 |
    |      74 | 愛知県       | %e6%84%9b%e7%9f%a5%e7%9c%8c          |          0 |
    |      77 | 三重県       | %e4%b8%89%e9%87%8d%e7%9c%8c          |          0 |
    |      80 | 滋賀県       | %e6%bb%8b%e8%b3%80%e7%9c%8c          |          0 |
    |      83 | 京都府       | %e4%ba%ac%e9%83%bd%e5%ba%9c          |          0 |
    |      86 | 大阪府       | %e5%a4%a7%e9%98%aa%e5%ba%9c          |          0 |
    |      89 | 兵庫県       | %e5%85%b5%e5%ba%ab%e7%9c%8c          |          0 |
    |      92 | 奈良県       | %e5%a5%88%e8%89%af%e7%9c%8c          |          0 |
    |      95 | 和歌山県     | %e5%92%8c%e6%ad%8c%e5%b1%b1%e7%9c%8c |          0 |
    |      98 | 鳥取県       | %e9%b3%a5%e5%8f%96%e7%9c%8c          |          0 |
    |     101 | 島根県       | %e5%b3%b6%e6%a0%b9%e7%9c%8c          |          0 |
    |     104 | 岡山県       | %e5%b2%a1%e5%b1%b1%e7%9c%8c          |          0 |
    |     107 | 広島県       | %e5%ba%83%e5%b3%b6%e7%9c%8c          |          0 |
    |     110 | 山口県       | %e5%b1%b1%e5%8f%a3%e7%9c%8c          |          0 |
    |     113 | 徳島県       | %e5%be%b3%e5%b3%b6%e7%9c%8c          |          0 |
    |     116 | 香川県       | %e9%a6%99%e5%b7%9d%e7%9c%8c          |          0 |
    |     119 | 愛媛県       | %e6%84%9b%e5%aa%9b%e7%9c%8c          |          0 |
    |     122 | 高知県       | %e9%ab%98%e7%9f%a5%e7%9c%8c          |          0 |
    |     125 | 福岡県       | %e7%a6%8f%e5%b2%a1%e7%9c%8c          |          0 |
    |     128 | 佐賀県       | %e4%bd%90%e8%b3%80%e7%9c%8c          |          0 |
    |     131 | 長崎県       | %e9%95%b7%e5%b4%8e%e7%9c%8c          |          0 |
    |     134 | 熊本県       | %e7%86%8a%e6%9c%ac%e7%9c%8c          |          0 |
    |     137 | 大分県       | %e5%a4%a7%e5%88%86%e7%9c%8c          |          0 |
    |     140 | 宮崎県       | %e5%ae%ae%e5%b4%8e%e7%9c%8c          |          0 |
    |     143 | 鹿児島県     | %e9%b9%bf%e5%85%90%e5%b3%b6%e7%9c%8c |          0 |
    |     146 | 沖縄県       | %e6%b2%96%e7%b8%84%e7%9c%8c          |          0 |
    +---------+--------------+--------------------------------------+------------+
    49 rows in set (0.00 sec)
    

    wp_terms と wp_term_taxonomy テーブルの truncate

    一瞬で消えるので要注意です。本番環境の場合はバックアップを取ってから実行しましょう。一度検証しておくことをおすすめします。

    MariaDB [database]> truncate table wp_terms;
    Query OK, 0 rows affected (0.04 sec)
    MariaDB [database]> truncate table wp_term_taxonomy;
    

    再登録の実施

    正常にサンプルデータを登録できた場合、DB テーブル側は以下のような感じになります。

    MariaDB [database]> select * from wp_terms;
    +---------+-----------------+-----------------------------------------------+------------+
    | term_id | name            | slug                                          | term_group |
    +---------+-----------------+-----------------------------------------------+------------+
    |       5 | Contributors    | contributors                                  |          0 |
    |       8 | Contributors    | contributors                                  |          0 |
    |      11 | 北海道地方      | %e5%8c%97%e6%b5%b7%e9%81%93%e5%9c%b0%e6%96%b9 |          0 |
    |      14 | 北海道          | %e5%8c%97%e6%b5%b7%e9%81%93                   |          0 |
    |      17 | 東北地方        | %e6%9d%b1%e5%8c%97%e5%9c%b0%e6%96%b9          |          0 |
    |      20 | 青森県          | %e9%9d%92%e6%a3%ae%e7%9c%8c                   |          0 |
    |      23 | 岩手県          | %e5%b2%a9%e6%89%8b%e7%9c%8c                   |          0 |
    |      26 | 宮城県          | %e5%ae%ae%e5%9f%8e%e7%9c%8c                   |          0 |
    |      29 | 秋田県          | %e7%a7%8b%e7%94%b0%e7%9c%8c                   |          0 |
    |      32 | 山形県          | %e5%b1%b1%e5%bd%a2%e7%9c%8c                   |          0 |
    |      35 | 福島県          | %e7%a6%8f%e5%b3%b6%e7%9c%8c                   |          0 |
    |      38 | 関東地方        | %e9%96%a2%e6%9d%b1%e5%9c%b0%e6%96%b9          |          0 |
    |      41 | 茨城県          | %e8%8c%a8%e5%9f%8e%e7%9c%8c                   |          0 |
    |      44 | 栃木県          | %e6%a0%83%e6%9c%a8%e7%9c%8c                   |          0 |
    |      47 | 群馬県          | %e7%be%a4%e9%a6%ac%e7%9c%8c                   |          0 |
    |      50 | 埼玉県          | %e5%9f%bc%e7%8e%89%e7%9c%8c                   |          0 |
    |      53 | 千葉県          | %e5%8d%83%e8%91%89%e7%9c%8c                   |          0 |
    |      56 | 東京都          | %e6%9d%b1%e4%ba%ac%e9%83%bd                   |          0 |
    |      59 | 神奈川県        | %e7%a5%9e%e5%a5%88%e5%b7%9d%e7%9c%8c          |          0 |
    |      62 | 中部地方        | %e4%b8%ad%e9%83%a8%e5%9c%b0%e6%96%b9          |          0 |
    |      65 | 新潟県          | %e6%96%b0%e6%bd%9f%e7%9c%8c                   |          0 |
    |      68 | 富山県          | %e5%af%8c%e5%b1%b1%e7%9c%8c                   |          0 |
    |      71 | 石川県          | %e7%9f%b3%e5%b7%9d%e7%9c%8c                   |          0 |
    |      74 | 福井県          | %e7%a6%8f%e4%ba%95%e7%9c%8c                   |          0 |
    |      77 | 山梨県          | %e5%b1%b1%e6%a2%a8%e7%9c%8c                   |          0 |
    |      80 | 長野県          | %e9%95%b7%e9%87%8e%e7%9c%8c                   |          0 |
    |      83 | 岐阜県          | %e5%b2%90%e9%98%9c%e7%9c%8c                   |          0 |
    |      86 | 静岡県          | %e9%9d%99%e5%b2%a1%e7%9c%8c                   |          0 |
    |      89 | 愛知県          | %e6%84%9b%e7%9f%a5%e7%9c%8c                   |          0 |
    |      92 | 近畿地方        | %e8%bf%91%e7%95%bf%e5%9c%b0%e6%96%b9          |          0 |
    |      95 | 三重県          | %e4%b8%89%e9%87%8d%e7%9c%8c                   |          0 |
    |      98 | 滋賀県          | %e6%bb%8b%e8%b3%80%e7%9c%8c                   |          0 |
    |     101 | 京都府          | %e4%ba%ac%e9%83%bd%e5%ba%9c                   |          0 |
    |     104 | 大阪府          | %e5%a4%a7%e9%98%aa%e5%ba%9c                   |          0 |
    |     107 | 兵庫県          | %e5%85%b5%e5%ba%ab%e7%9c%8c                   |          0 |
    |     110 | 奈良県          | %e5%a5%88%e8%89%af%e7%9c%8c                   |          0 |
    |     113 | 和歌山県        | %e5%92%8c%e6%ad%8c%e5%b1%b1%e7%9c%8c          |          0 |
    |     116 | 中国地方        | %e4%b8%ad%e5%9b%bd%e5%9c%b0%e6%96%b9          |          0 |
    |     119 | 鳥取県          | %e9%b3%a5%e5%8f%96%e7%9c%8c                   |          0 |
    |     122 | 島根県          | %e5%b3%b6%e6%a0%b9%e7%9c%8c                   |          0 |
    |     125 | 岡山県          | %e5%b2%a1%e5%b1%b1%e7%9c%8c                   |          0 |
    |     128 | 広島県          | %e5%ba%83%e5%b3%b6%e7%9c%8c                   |          0 |
    |     131 | 山口県          | %e5%b1%b1%e5%8f%a3%e7%9c%8c                   |          0 |
    |     134 | 四国地方        | %e5%9b%9b%e5%9b%bd%e5%9c%b0%e6%96%b9          |          0 |
    |     137 | 徳島県          | %e5%be%b3%e5%b3%b6%e7%9c%8c                   |          0 |
    |     140 | 香川県          | %e9%a6%99%e5%b7%9d%e7%9c%8c                   |          0 |
    |     143 | 愛媛県          | %e6%84%9b%e5%aa%9b%e7%9c%8c                   |          0 |
    |     146 | 高知県          | %e9%ab%98%e7%9f%a5%e7%9c%8c                   |          0 |
    |     149 | 九州地方        | %e4%b9%9d%e5%b7%9e%e5%9c%b0%e6%96%b9          |          0 |
    |     152 | 福岡県          | %e7%a6%8f%e5%b2%a1%e7%9c%8c                   |          0 |
    |     155 | 佐賀県          | %e4%bd%90%e8%b3%80%e7%9c%8c                   |          0 |
    |     158 | 長崎県          | %e9%95%b7%e5%b4%8e%e7%9c%8c                   |          0 |
    |     161 | 熊本県          | %e7%86%8a%e6%9c%ac%e7%9c%8c                   |          0 |
    |     164 | 大分県          | %e5%a4%a7%e5%88%86%e7%9c%8c                   |          0 |
    |     167 | 宮崎県          | %e5%ae%ae%e5%b4%8e%e7%9c%8c                   |          0 |
    |     170 | 鹿児島県        | %e9%b9%bf%e5%85%90%e5%b3%b6%e7%9c%8c          |          0 |
    |     173 | 沖縄県          | %e6%b2%96%e7%b8%84%e7%9c%8c                   |          0 |
    +---------+-----------------+-----------------------------------------------+------------+
    57 rows in set (0.00 sec)
    

    参考

スポンサーリンク