WordPress:カテゴリーをタグにコピーして整理する

WordPress:カテゴリーをタグにコピーして整理する

当サイトのことですが、思いつくままにカテゴリーを追加してきましたら項目が45個にまでなってしまいました(笑)。よくないことはわかっているのですがついついやってしまったことに今更ながらに困惑しています。

01カテゴリーをタグに変換

で、今回整理しようと思い立ち、なんとか簡単に整理する方法はないかといろいろ探ってみたんですがありません(笑)。結局、規則性のないものは一括処理できないということで、一記事ずつチェックして変更していくしかありません。

ただ、45項目にまで増えてしまったカテゴリーにまったく意味がないわけではありませんのでどうしようかと考えた結果次の方法でやってみることにしました。

  1. 現在のカテゴリーをそのままタグにコピーする
  2. カテゴリーの階層構造を作成する
  3. 一記事ずつカテゴリーを変更していく

1 については、ツール > インポート 「カテゴリー・タグ変換ツール」というプラグインがデフォルトで付属していますが、これですと、カテゴリーがなくなってしまいます。数ページであればいいのですが、600記事ほどありますのですべて整理するには1年はかかります(笑)。

ですので、コピーするなら自前の方法でやるしかありません。ざっと試したところでは機能的には可能なようですし、SEO 的にカテゴリーとタグが同じというのはどうなんだろうとは思いますが、現在の状態のほうが好ましくないわけですし、最終的には解消するわけですからまあ大丈夫でしょう。

2、3は当たり前で、これをやってこなかったから今の状態になっているということです。

02カテゴリーやタグ情報の保存のされ方

まず、カテゴリーやタグがどうやってデータベースに保存されているか見てみます。WordPress では、カテゴリーもタグもタクソノミーとして管理されており、データとしての保存方法は同じです。次の3つのテーブルがタクソノミーに関連しているものです。

  • wp_terms は、カテゴリーやタグの項目の保存
  • wp_term_taxonomy は、カテゴリー(category)かタグ(post_tag)かの保存
  • wp_term_relationships は、記事とカテゴリーやタグとの関連性の保存

に使われています。たとえば、新しくカテゴリーを追加しますと、その項目名は wp_terms に保存され、それがカテゴリーであることは wp_term_taxonomy に保存され、記事 ID とタクソノミー ID(カテゴリーやタグ ID)の関連が wp_term_relationships に保存されといった具合です。

03カテゴリーをタグにコピーする

実際の作業はまだ完了していませんので流れだけです。phpMyAdmin を使います。

wp_terms
  • wp_terms にはその項目が何の項目か識別するものがありませんので、すべてを抽出し手作業でカテゴリー項目だけ残し追加します。
wp_term_taxonomy
  • wp_term_taxonomy は、wp_terms の term_id と紐付いていますので、カラム taxonomy が category のものを抽出し、post_tag に書き換え、term_id を書き換え追加します。ちょっと面倒ですがさほど数の多いものではありませんのであれこれ考えるよりも手作業で書き換えたほうが早いです。
wp_term_relationships
  • wp_term_relationships はかなり面倒です。記事に設定したカテゴリーの数だけレコード(行)がありますのですべて term_taxonomy_id を post_tag の ID に書き換える必要があります。これは php の仕事ですね。object_id が記事 ID です。

ということで、実際にやってみましょう。php のコードもありますので結果の記事は次回です。