WordPress SEOのカスタムフィールドが投稿時に保存されなかった原因

スポンサーリンク

個人的にWordPressのSEOに関しては「WordPress SEO」プラグイン1つですべてまかなっています。
参考:【保存版】WordPress SEO by Yoastプラグインの設定完全版

これ1つに頼りきってしまうほど便利なのですが、今回ちょっとした問題が起きました。

投稿のMetaDescriptionを設定して記事を公開(更新)したのに、更新完了後には入力したはずの欄が真っ白になっていたのです!これは何でや!と思って調べてみたりいろいろ試した結果、解決できました。

同じ現象で迷っている方が検索した限りでは見つからなかったので、とんでもなくレアなケースだと思いますが、何かの役に立つ可能性もあるので、残しておきます。

現象の詳細

WordPress SEOプラグインを使って、投稿や固定ページやカスタム投稿タイプで記事を作成すると、wp_postmetaテーブルに記事ごとのSEOに関する設定情報が保存されます。

真っ白になっていた時は案の定、wp_postmetaテーブルにWordPress SEOプラグインに関する情報(カスタムフィールド)が入っていませんでした。

正しくはこんな感じになります。

wp_postmeta

_yoast_seo_で始まるキーワードに対して何らかの値が設定されています。

なぜカスタムフィールドが入ってなかったのか?

その原因は、別のカスタムフィールドでした。1つ1つのpost_id(投稿ID)ごとにカスタムフィールドを検索したところ、あるキーワードを発見しました。

_wp_page_template

それは「_wp_page_template」というキーワードです。この「_wp_page_template」の意味は固定ページで使用しているテンプレートのことです。上のように「_wp_page_template」の値には固定ページのテンプレートとなるファイル名が入っていますね。

原因はおそらく、post_id(投稿ID)とテンプレートファイルが紐付いていて、そのテンプレートを使用していない、もしくはテーマを変更したことで使わなくなった場合に紐付けがおかしくなっているのでしょう。

私は過去のテーマでは固定ページのテンプレートファイルを使用していましたが、新しいテーマにしてそのテンプレートファイルを使うことがもうないので、この「_wp_page_template」があるテーブルのレコードは全て削除しました。

削除したら、無事に投稿時に入力したMetaDescriptionが反映できました。

※ データベースを直接いじることになりますので、実践される場合は、データベースのバックアップを取るなどしてください。

参考:【保存版】WordPress SEO by Yoastプラグインの設定完全版