YoastのメタディスクリプションをRSS/Feedに登録する方法

Yoast SEOのMeta DescriptionをRSSに登録するためには、WordPressのfeed-rss2.phpをカスタマイズします。標準RSSの仕様では110文字に制御されたり、日本語では特にマルチバイトの問題が発生します。Yoastからデータを取得してこれらを解消します。
Welcome
  • オリジナルfeed用のphpをつくる
  • 関数the_excerpt_rss()の部分を変える
  • 関数get_post_meta(get_the_ID(), ‘_yoast_wpseo_metadesc’, true)を使う

完成版・ソースコード

WordPressの子テーマを作成し、「functions.php」と「feed-rss2.php」を新たに作成して、子テーマのディレクトリへアップロードします。

functions.php

ここでは2つの関数を定義しています。custom_feed_rss2()は、既存のRSSではなくカスタマイズしたRSS(子テーマ内のfeed-rss2.php)を読み込む関数です。そして、get_my_feed()は、Yoastのメタディスクリプションとアイキャッチ画像を取得して、RSS/Feedに出力させる関数です。

feed-rss2.php

WordPressのwp-includesフォルダ内に保存されている「feed-rss2.php」をコピーします。そして、以下の画面のようにデータの取得関数「the_excerpt_rss()」の箇所を、先ほどfunctions.phpで定義した「get_my_feed()」に変更します。

置き換え用コード

get_my_feed(get_the_ID(), '_yoast_wpseo_metadesc', true);

出力結果

以下の画像は、FireFoxでみた当サイトのFeedです。

「#SEO」の部分は、functions.php内で定義しています。RSS/FeedをIFTTTを使って、Facebookに連携させることを想定しているため、埋め込んでいます。

まとめ

WordPressを導入しておよそ1週間後、なぜかRSSの中のDescriptionの表示がUnicode化されていることに気づきました。WordPressのマルチバイト対応にはいくつか問題があることがわかり、急遽、このような変更を行いました。

どのような状況で起こるのかは不明のままですが、Yoastからメタディスクリプションのデータを取得することで、結果として、RSS自体をバージョンアップさせることに成功しましたのでよしとしました。もし、同様の現象に見舞われていらっしゃいましたら、ご参考になさってください。