久しぶりに以前構築したサイトを見るとBlogの最新記事一覧が表示されてない!
ってことがたまにあります。そんな時の対処を考えました。
■今回の対処法は条件として
・表示側のサイト 静的またはWordpress以外のCMSで構築
・ブログサイト Wordpressで構築
の場合となります。
構築の費用の関係か上記のような作りのサイトは結構ある気がします。
そういった場合外部のWordpressサイトの最新記事の情報を表示側のサイトに
埋め込む際にWordpressのRSSを取得し表示というのが一般的です。
具体的な方法としては下記のようなものが考えられます。
・jsを使用
・phpを使用
上記のパターンの場合外的要因が理由で表示が不安定になることがあります。
jsの場合、記憶に残るのは「Google Feed API」が廃止されたり、代わりにYQL使ってたらそれも廃止されたりと
phpの場合、サーバー側でバージョン入れ替わったり。
結局、イタチごっこで消えたら対応という形に・・・。
もう嫌だ・・・。
ということになり安定感重視の力技を考えました。
■解決案
WordPressに最新記事一覧のみの固定ページを用意し表示側のサイトで
iframeを使用して表示させます。
上記の方法で最新記事を表示させれば極端な話
読み込まれている側のWordpressのブログサイトが生きている限り表示が消えることはありません。
読み込みが消えていたらそもそもブログサイトが死んでます。
■設置方法
・WordPressにログインし固定ページを追加する。
-パーマリンクの設定を「blogfeed」に設定。
・記事一覧用テーマを追加する 「page-blogfeed.php」
page-blogfeed.php———-
<ul class="system-list">
<?php
$args = array(
'posts_per_page' => 5 // 表示件数
);
$posts = get_posts( $args );
foreach ( $posts as $post ): // ループ開始
setup_postdata( $post ); // 記事データ取得
?>
<li class="sideFeed">
<a href="<?php the_permalink(); ?>" target="_parent"> // iframeで表示するので「target="_parent"」を指定
<div class="system-pic"><?php the_post_thumbnail(); ?></div>
<p class="system-date"><?php echo get_the_date(); ?></p>
<p class="system-ttl"><?php the_title(); ?></p>
</a>
</li>
<?php
endforeach; // ループ終了
wp_reset_postdata(); // 直前のクエリを復元
?>
</ul>
・表示側のサイトにiframeタグを設置。
<iframe width="100%" src="ブログURL/blogfeed/" frameborder="0"></iframe>
上記になります。
かなり無理やりで正攻法ではないと思いますので実装はご自身の責任でお願いします。
理想はphpやjsでその都度対応という形になるんでしょうか・・・。
表示されない期間があればユーザーに不便があるので安定感をといった方は一度お試しください。