WordPressのプラグインである「All in one SEO Pack」のデータ(タイトル、キーワード、メタディスクリプション)をWordPressテーマ「Simplicity」・「Cocoon」に移行する方法についてまとめました。
「なるべく初心者の方でも出来るように」と思って書いてますが、多少なりともSQLの知識がないと分かりづらいかもしれません。その点はご了承ください。
参考になれば幸いです。
All in one SEO Packから移行する前に
All in one SEO Packから移行する前に、「どのデータを移行するのか、データベースはどのようになっているか」等についてご説明します。
とにかくやり方だけ知りたい方は、「All in one SEO Packのデータを移行するSQL」まで読み飛ばしてください。
All in one SEO Packから移行するデータの確認
今回、All in one SEO Packから移行するデータは、
- タイトル
- キーワード
- メタディスクリプション
の3点です。
これらのデータがWordPressのテーブルにどのように格納されているかについてご紹介します。
WordPressのデータベースの理解を深める
WordPressのデータベースでは多くのカラムが存在します。詳細はWordPressデータベースを参照してください。
ただ、今回移行時に確認するテーブルは以下2つだけです。
- 「wp_posts」 :投稿データ(投稿日時や本文等)
- 「wp_postmeta」:メタデータ(キーワードやメタディスクリプションなど)
「wp_posts」テーブルには投稿日時や本文等の情報が入っていて、「wp_postmeta」テーブルにはキーワードやメタディスクリプションなどの投稿を補助する情報(メタデータ)が入っています。
つまり、All in one SEO Pack、Simplicity、Cocoonの「タイトル、キーワード、メタディスクリプション」の情報は「wp_postmeta」テーブルに格納されているというわけです。
wp_postmetaのテーブル構造を理解する
では、All in one SEO Packのメタディスクリプションなどが、どのように「wp_postmeta」テーブルに格納されているかについてご説明します。
まず、「wp_postmeta」テーブルには以下4つのカラムが存在します。
- meta_id
- post_id
- meta_key POINT!
- meta_value
「meta_id」はwp_postmetaテーブルで一意に定められるキー(主キー)のことで、「post_id」は、wp_postsテーブルのIDの外部キーです。
「meta_key」は、プラグインやテーマなどが独自に決められるIDを設定し、「meta_value」にはその値が入ります。
例えば、All in one SEO Packのメタディスクリプションを取得したいという場合、「meta_key」に「_aioseop_description」を指定すると、「meta_value」からメタディスクリプションの文章が取得できるというわけです。
今回は、このmeta_keyとmeta_valueを使って、「All in one SEO PackからSimplicity・Cocoonへのデータ移行」をSQL文にて実施していきます。
All in one SEO Packからデータを移行するSQL
All in one SEO PackのメタディスクリプションをCocoonのメタディスクリプションに移行するSQLは以下となります。
UPDATE wp2_postmeta, ( SELECT post_id, meta_value AS aioseop_meta_value FROM wp2_postmeta WHERE meta_key = "_aioseop_description" ) AS aioseop SET wp2_postmeta.meta_value = aioseop.aioseop_meta_value WHERE wp2_postmeta.post_id = aioseop.post_id AND wp2_postmeta.meta_key = "the_page_meta_description"
このSQLは、メタディスクリプションを移行するSQLとなっていますが、少し値を変えるだけで、タイトルとキーワードの移行も可能です。
また、Cocoonではなく、Simplicityに移行することも可能です。
順をおって、解説してきます。
SQLの解説
1〜2行目:更新するテーブル名を指定
UPDATE wp2_postmeta,
UPDATEを行うテーブルを指定します。「wp2_postmeta
」は環境によって異なりますので、ご自身のデータベースを確認してください。
3〜9行目:All in one SEO Packのデータを取得
( SELECT post_id, meta_value AS aioseop_meta_value FROM wp2_postmeta WHERE meta_key = "_aioseop_description" ) AS aioseop
ここでは、「wp2_postmeta
」テーブルから「meta_key
」を指定して、「meta_value
」(All in one SEOの値)を取得しています。
そして、取得した値は「AS
」を使って、「aioseop_meta_value
」という名前に変更しています。
取得するデータをタイトルやキーワードに変更する方法
上記の「WHERE meta_key = "_aioseop_description"
」の部分で、指定する「meta_key
」を変更すれば、タイトルやキーワードを取得することが可能です。
All in one SEO Packのmeta_keyは以下の値となっています。適宜、変更してください。
項目 | meta_key |
タイトル | _aioseop_title |
キーワード | _aioseop_keywords |
メタディスクリプション | _aioseop_description |
10〜13行目:Cocoonのメタディスクリプションを更新
SET wp2_postmeta.meta_value = aioseop.aioseop_meta_value WHERE wp2_postmeta.post_id = aioseop.post_id AND wp2_postmeta.meta_key = "the_page_meta_description"
「WHERE
」句で、値の設定場所を指定し、「SET
」句にて実際に値を設定します。
「wp2_postmeta.meta_key = "the_page_meta_description"
」で、Cocoonのメタディスクリプションを指定していますので、Cocoonのメタディスクリプションに値が設定されるということになります。
Cocoonのタイトルやキーワードに移行したい場合
「"the_page_meta_description"
」の部分を変更すると、タイトルやキーワードを設定することが可能です。
Cocoonのmeta_keyは以下の値となっています。
項目 | meta_key |
タイトル | the_page_seo_title |
キーワード | the_page_meta_keywords |
メタディスクリプション | the_page_meta_description |
Simplicityに移行したい場合
同じように、Simplicityにデータを移行したいという場合は、「"the_page_meta_description"
」の部分をSimplicityのmeta_keyに変更すればOKです。
Simplicityのmeta_keyは以下の値となっています。
項目 | meta_key |
タイトル | seo_title |
キーワード | meta_keywords |
メタディスクリプション | meta_description |
移行後に確認すること
正しくデータが移行できたかをチェックするために、以下のSQLを実行してみてください。
公開済みの記事と実行結果の数が一致していればOKです。
SELECT * FROM wp2_postmeta WHERE meta_key = "the_page_meta_description" AND post_id IN( SELECT id FROM wp2_posts WHERE post_status = "publish" AND post_type = "post" )
なぜか一部のデータはうまく移行できなかった。。。。
理由が分からないのですが、私の場合はなぜか一部のデータはうまく移行できませんでした。。。
うまく移行できなかった原因は「公開している記事でもCocoonのmeta_keyが存在しないものがいくつかあった」からです。
つまり、「移行前のAll in one SEO Packのデータは存在していても、Cocoon側のデータが存在しないために、移行できなかった」というわけです。
Cocoon制作者のわいひらさんに質問しようかなとも思いましたが、忙しそうなのでやめました。
ただ、meta_keyが存在しないデータは2〜3記事だけだったので、手動でコピーして、無事移行は完了しました。
まとめ
All in one SEO PackのデータをCocoon、Simplicityに移行する方法についてご紹介しました。SQLを実行するだけで、「タイトル・キーワード・メタディスクリプション」の移行が可能です。
今回のSQLは以下のURLを参考にさせて頂きました。ありがとうございました。
参考 [Simplicity]All in One SEO Pack をやめて Simplicity のSEO設定に移行する
なお、今回ご紹介した方法ではnoindexやnofollowのデータは移行できないので、手動で移行をお願いします。
All in one SEO Packを削除した結果、「サイトの速度が速くなるのか?」とか「検索順位に変動があるか」についても調べてみました。参考になれば幸いです。

コメント