[Simplicity]All in One SEO Pack をやめて Simplicity のSEO設定に移行する

背景

ケチってロリポップのライトプランのため、WordPressの表示が遅いと常々感じていた。
噂によると、All in One SEO PackというSEO用のプラグインは遅いことで有名らしい。
私の場合は使っているテーマのSimplicityにはデフォルトで似たようなSEO対策機能があるようなので、
All in One SEO Packは削除してみることにした。

目標

現状、投稿のDescription(Google検索結果でページタイトルの下に表示される説明文)を、
All in One SEO Packの欄:青枠にのみ入力している。
SimplicityのほうのSEO設定入力欄:赤枠は空。

プラグインを削除する前に、
All in One SEO Packに入力済みの値をSimplicityのSEO設定欄に移行する必要がある。

公式では非対応

All in One SEO Packからの切り替えについて
Simplicityの特徴 › フォーラム › Simplicity2に関する話題何でも › All in One SEO Packからの切り替えについて このトピックには6件の返信が含

「All in One SEO Packのデータを引き継ぐ」作業を一括でできる設定があるのでしょうか?
記事ひとつひとつ、入力しなおす方法しかないのでしょうか?

Simplicityにはそのような機能はないです。
これまでAll in One SEO Packを利用してきて、既に多数の記事のメタディスクリプションなどを入力している場合は、そのままプラグインを利用するのが最も手っ取り早いかと思います。

ということなので、機能がないなら自分でやるしかないっ

解決策

下記SQLを実行して、meta_descriptionに_aioseop_descriptionの値を挿入する。

UPDATE wp_postmeta,
    (SELECT MAX(post_id) as post_id, meta_value as aioseop_meta_value FROM wp1_postmeta WHERE meta_key = "_aioseop_description" GROUP BY post_id) AS aioseop
SET wp_postmeta.meta_value = aioseop.aioseop_meta_value
WHERE wp_postmeta.post_id = aioseop.post_id
AND wp_postmeta.meta_key = "meta_description"

下記のSQLを実行して目でちらちらーっと確認した限りでは、正しく移せてそう。
(それ以上の確認はしていないので、同じことを試される場合はあくまで自己責任で)

SELECT * FROM `wp_postmeta` WHERE meta_key = "meta_description" OR meta_key = "_aioseop_description" ORDER BY `wp_postmeta`.`post_id` ASC

メモ

メタタグのデータは、データベースのwp_postmetaに入っている。

Discriptionにかかわらず、メタタグはすべてここに格納されていて、
meta_keyで、メタタグの種類を指定している。

  • wp_postmetaテーブルのカラム
    • meta_id
    • post_id
    • meta_key
    • meta_value
データベース構造 - WordPress Codex 日本語版

All in One SEO Packのディスクリプションも、SimplictyのSEO設定のメタディスクリプションも、例に倣って上記テーブルに格納されている。
meta_keyはそれぞれ下記の通り。

  • All in One SEO Pack – _aioseop_description
  • Simplicity – meta_description

※ meta_descriptionは、現在有効となっている投稿すべてで存在しているが、
_aioseop_descriptionは、入力があった投稿のみINSERTされている

各記事を更新するたびにPOST IDが新しくなるが、
wp_postmetaテーブルに保存されているpost_idは、最新のものっぽいので、過去のPOST IDのメタタグがそれぞれ保存されているわけではないらしい

注意事項

くれぐれもデータベースはバックアップとってから。
今回はディスクリプション欄のみ移行しましたが、タイトルも同じ方法でできる(と思います)。