【続2・function.php活用】WordPressが吐き出すRSSフィードにサムネイルを挿入し別WordPressサイトで表示させる

Posted on 6 years ago.

ほぼ連載みたいになってますが、WordPressのフィードでサムネイル画像を吐き出す機能追加に関する記事です。これで3本目です。多分この方法が一番効率的で運用・管理も楽だと思います。

【関連記事】


という事で色々やっていたのですが、これまで活用していたWordPressの「feed-rss2.php」は、WordPressをアップデートする際に上書きされてしまうので、毎回編集し直さないといけません。それが面倒だな、と思っていました。

そんな時、「WebSpaceの中の人」のふきのとうさんがfunction.phpを活用する方法を教えてくれたので紹介します。なお、「feed-rss2.php」はもう使わないので、初期状態に戻して大丈夫です。

function.phpに以下を追加


function new_the_excerpt_rss($output) {
global $post;
return '<div><img src="' . catch_that_image() . '" alt="' . $post->post_title . '" /></div>' . $output;
}
add_filter('the_excerpt_rss', 'new_the_excerpt_rss');
後は画像をCSSで適当に調整してあげるだけです。

ふきのとうさん、ありがとうございました!

【続・仕様変更】WordPressが吐き出すRSSフィードにサムネイルを挿入し別WordPressサイトで表示させる【画像自動取得】

Posted on 6 years ago.



先程、「WordPressが吐き出すRSSフィードにサムネイルを挿入し別WordPressサイトで表示させる」という記事を書きましたが、正直な所、毎回カスタムフィールドにサムネイル用の画像を登録するのが手間なので、記事内の一番目の画像を自動的に取得するように仕様を変更しました。

function.phpに以下を追加


function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //画像が無い際にデフォルト画像を表示
$first_img = "デフォルト画像のパス";
}
return $first_img;
}
ブログ記事に画像が無い時に表示されるデフォルト用の画像も用意します。

feed-rss2.phpを修正


さっきまでは以下のソースでした。
<description><![CDATA[<div><img src="<?php echo post_custom('img') ?>" alt="<?php the_title_rss() ?>" /></div>
<?php the_excerpt_rss() ?>]]></description><?php else : ?>
<description><![CDATA[<div><img src="<?php echo post_custom('img') ?>" alt="<?php the_title_rss() ?>" /></div>
<?php the_excerpt_rss() ?>]]></description>
上記のecho post_custom(‘img’)、カスタムフィールド「img」を取得する箇所を以下のように修正します。
<description><![CDATA[<div><img src="<?php echo catch_that_image(); ?>" alt="<?php the_title_rss() ?>" /></div>
<?php the_excerpt_rss() ?>]]></description><?php else : ?>
<description><![CDATA[<div><img src="<?php echo catch_that_image(); ?>" alt="<?php the_title_rss() ?>" /></div>
<?php the_excerpt_rss() ?>]]></description>
echo catch_that_image();にして、記事内の一番目の画像を取得するようにします。

これである程度は自動化出来たはずです。ちなみに「やりたかったあの機能を実現する、WordPress 中級者必見のカスタマイズ6個」辺りを参考にさせて頂きました。

WordPressが吐き出すRSSフィードにサムネイルを挿入し別WordPressサイトで表示させる

Posted on 6 years ago.

先日、ホームサイトでフィードを読み込ませて表示をさせているブログ記事にサムネイルを出す機能を追加しました。実は前々から実装したかったのですが、ホームサイトブログはサブドメインが異なるため、データのやり取りをどうしようか悩んでいたのですが、ブログ記事を書く際に設定できるカスタムフィールドを活用する事で解決出来ました。また、それに伴い、WordPressのfeed-rss2.phpのカスタマイズも行いました。

feed-rss2.phpをカスタマイズ


/wp-includes/feed-rss2.phpを以下のようにカスタマイズします。44行目辺りです。

【変更前】
&lt;description&gt;&lt;![CDATA[&lt;?php the_excerpt_rss() ?&gt;]]&gt;&lt;/description&gt;&lt;?php else : ?&gt;
&lt;description&gt;&lt;![CDATA[&lt;?php the_excerpt_rss() ?&gt;]]&gt;&lt;/description&gt;

【変更後】
&lt;description&gt;&lt;![CDATA[&lt;div&gt;&lt;img src=&quot;&lt;?php echo post_custom('img') ?&gt;&quot; alt=&quot;&lt;?php the_title_rss() ?&gt;&quot; /&gt;&lt;/div&gt;
&lt;?php the_excerpt_rss() ?&gt;]]&gt;&lt;/description&gt;&lt;?php else : ?&gt;
&lt;description&gt;&lt;![CDATA[&lt;div&gt;&lt;img src=&quot;&lt;?php echo post_custom('img') ?&gt;&quot; alt=&quot;&lt;?php the_title_rss() ?&gt;&quot; /&gt;&lt;/div&gt;
&lt;?php the_excerpt_rss() ?&gt;]]&gt;&lt;/description&gt;
divで囲み、カスタムフィールドの「img」を読みこませるようにします。これで、WordPressが吐き出すフィードに、カスタムフィールド「img」の情報が追加されます。

カスタムフィールドでサムネイル画像を設定


ブログ記事を書く際に、カスタムフィールドを「img」とし、任意の画像URL(サムネイル用)を設定します。それだけです。ちなみに僕は、CSSを使って画像を縮小させたりしています。毎回毎回画像を編集するのは面倒ですので…。

という事で、サムネイルの表示に成功しました。ちなみにこのfeed-rss2.phpですが、WordPressをアップデートする際に上書きとかされちゃうんですかね?そしたらまた追加し直しだなぁ。

なお、今回のサムネイル機能実装に関して、以下の記事を参考にさせて頂きました。

WordPressのRSSフィードにサムネイル画像を挿入、別サイトで読み込む方法

とても助かりました。ありがとうございます。

1