WordPressの再利用?RSSをチョコットカスタマイズしてアイキャッチを含める。RSSの利用メモ

日記
スポンサーリンク

使い道があまりなくて(正解:更新が面倒でサボってた)放置ぎみなこのWordPressを有効活用しようかと、趣味で運営しているサイト達のお知らせをWordPressで更新するかということになる(単なる思いつきですけど)

はじめは、サイトごとにWordPressインストールして更新しようかと作業を行っていたら。

たいして更新ないサイトごとにWordPressあってもつかわねーしwwww

そりゃそうだろ・・・・・ほんとお前バカだな

いや・・・更新便利かなって思ったんですもの

この日記?用のWordPressにお知らせ情報を書き込んだら、サイトごとに反映されるようにしよう!そうしよう!ってことで、RSSを利用してPHPを利用してゴニョゴニョすることにしました。

カテゴリーごとにRSSの取得

カテゴリーごとにRSSを取得する方法は、Googleで調べれば山のように出てきたので楽ちんでした。WordPressのカテゴリー毎のページアドレスの最後に/feed/を書き込むだけで済むのはありがたい(‘、3_ヽ)_

https://sumikko.info/category/newcomic/feed/
【WordPress】各カテゴリー毎のRSSフィードを出力する方法
ワードプレスで構築しているサイトで、各カテゴリー毎のRSSを出力する方法を紹介します。まずは基本的なRSSの出力方法を復習しましょう。ワードプレスのRSSフィードの配信方法普段ワードプレスでRSSフィードの配信をする際は...

あとはPHPの「file_get_contents」で取得すればいいだけだし楽ちんだと思ったけどAmazonAPIなどのようにすんなり「simplexml_load_string」で取れないし。撃沈(:3_ヽ)_、XMLで駄目な文字列を「preg_replace」で置き換えないと駄目らしいです。

// techacademyマガジンのRSSフィードからRSSを取得します
$feed = file_get_contents('https://techacademy.jp/magazine/feed');

// XML解析を行う上で、XMLで不正文字と扱われる対象を空文字に変換します
$invalid_characters = '/[^\x9\xa\x20-\xD7FF\xE000-\xFFFD]/';
$feed = preg_replace($invalid_characters, '', $feed);

// 文字列をXMLとして解析して、SimpleXMLElementクラスのインスタンスに変換
$rss = simplexml_load_string($feed);
新着情報を受け取る!PHPでRSSを取得する方法【初心者向け】 | TechAcademyマガジン
初心者向けにPHPでRSSを取得する方法について解説しています。simplexml_load_file関数を使ってRSSを取得する書き方を紹介しています。実際にサンプルコードを書いているので、ぜひ参考にしてみてください。

アイキャッチが出力されない

アイキャッチ画像はWordPressの基本機能だと出力されないのね、、、、無くても大した問題もないけど、やっぱり有ったほうが嬉しいよねってことで、RSSにアイキャッチを含める方法を探す。

タグにアドレスを含める方法が受け取る側としては、スマートで良いんだけど、結構WordPressの本体ソースをいじらなきゃならないのか、アップデートごとに設定したのが戻るのがやだなと思い不採用。

サボリ気味だからね極力WordPressいじりたくない。アップデートも自動で楽したいし・・・・

function.phpを利用して「description」に画像タグねじ込む方法があったので採用する。これなら子テーマ化すればアップデートごとに気にしなくて良いしね。

WordPressで設定したアイキャッチ画像をRSSリーダー(feedly)に表示させる方法
Feedly側にWordPressで設定したアイキャッチ画像を渡す設定を解説。 設定にはfunctions.phpにコードを追記する必要がありますが、このブログで紹介しているコードをコピペでOK!

受け取り側のPHPで正規表現で画像URL引っこ抜けば問題ないはず。

//function.php

function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '<p data="rss_img">' . get_the_post_thumbnail($post->ID,'full') . '</p>' . $content;
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');

後で受け取りやすいように、Pタグにdata=”rss_img” を追加して、preg_matchで受け取ってみた。

//preg_matchで受け取り側

if(preg_match('/<p data="rss_img">(.*?)src="(.*?)"(.*?)<\/p>/', (string)$item->description, $description_match)){
	$image = $description_match['2'];
}else{
	$image = '';
}

description(本文内)の余分な文字を除去

結構HTMLタグの除去は別にしても余分な文字が結構含まれているので除去・置き換えしておいくことにした。

「・・・」文字数が多い時に文最後に挿入される、文字を丸める点線がメタ文字で [&#8230;]で表示されてしまうので置き換える

$description = str_replace(' [&#8230;]','...',$description);

最後にある The post と first appeared on のリンクも要らないからポイッとしておく。

//The post以降全て要らなかったので雑に置き換え
$description = strip_tags(preg_replace('/The post(.*)/', '',$description));

他にもチョコチョコと躓いたけどなんとか、お知らせ機能を各種サイトにもっていけたので一段落。RSSを扱うことがほとんど無いから忘れた時用にメモしておく。

コメント

  1. NORILOG より:

    記事の紹介ありがとうございます。

    • クロともクロとも より:

      わざわざコメントありがとう御座います。

      他のサイトにRSSを表示する際に非常に参考にさせて頂きました。

タイトルとURLをコピーしました