WPサイトに他のサイトの新着記事を表示させる方法で
GoogleAPIを利用する等色々な方法がありますが
APIで思っているようにできなかったので今回もまたぐぐってみました
他にも参考にしたサイトがあったのですが、忘れてしまいました・・
【実行環境】
WP3.5
Exec-PHP4.9(プラグイン)
【実現したいこと】
・複数サイトの新着記事を抽出
・サイトに合わせて画像(アイコンサイズ)を表示
・新着情報を日付順に降順でソート
・全体の表示件数と各サイトから抽出する記事の件数を指定したい
・タイトルの文字数を制限したい
1.Exec-PHPを動作するようにします
2.サイトのイメージアイコンを作成し、サーバーにアップロード
3.表示させたいページにコードを入力
(今回はテーマのindex.phpを編集しました)
※index.php等のPHPで表示させる場合は、Exec-PHPは不要です
※参考にしたサイトがアメブロの抽出についてのものでしたので、アメブロの広告カットなどの機能が盛り込まれています
特に支障がないので、今回その部分は変更なしで利用させていただいています
表示させたい箇所に以下のコードを入力します
<?php include_once(ABSPATH . WPINC . '/rss.php'); // wp向けパス ini_set("display_errors","0"); // 各アメブロRSSのURL入力 $blog_rss_arr = array( '<a href="http://exsample1.com/?feed=rss2'">http://exsample1.com/?feed=rss2'</a> => array('<a href="http://exsample.com/img/1.jpg'">http://exsample.com/img/1.jpg'</a> => 'サイト1'), '<a href="http://exsample2.com/?feed=rss2'">http://exsample2.com/?feed=rss2'</a> => array('<a href="http://exsample.com/img/2.jpg'">http://exsample.com/img/2.jpg'</a> => 'サイト2') ); //RSSの指定、サイトイメージの画像ファイルを指定しています // 新着記事の表示件数 $num = 4; foreach($blog_rss_arr as $url => $a) { $rss = fetch_rss($url); $title = $rss->channel['title']; // ブログタイトル から取得 $link = $rss->channel['link']; // ブログタイトルURL から取得 foreach( $a as $photo => $mem_name) { $cnt=0; //各サイトの抽出件数 $rss_cnt=2; foreach($rss->items as $blog) { if($cnt>=$rss_cnt){ break; }else{ if(mb_strlen($blog['title'],'UTF-8')<24){ //タイトルを23文字まで表示させ、超えている場合は「....」を末尾に追加表示 $blog_title = $blog['title']; }else{ $blog_title = mb_substr($blog['title'],0,23,'UTF-8') . '....'; } $blog_link = $blog['link']; $blog_date = $blog['pubdate']; // 投稿日の取得 // ブログの投稿日を表示 $out_item_date = date('Y.m.d', strtotime($blog_date)); // RSSに含まれてしまうPR記事を除外 if(preg_match("/^PR:/",$blog_title)) { $out_item =''; } else { $out_item =' <div> <img src="' . $photo . '">' . $out_item_date . ' ' . '<a href="' . $blog_link . '" target="_blank">' . $blog_title . '</a> </div>'; $unix_time = date('U', strtotime($blog_date)); $blog_arr[$unix_time] = $out_item; } $cnt++; } } } } // 記事を最新順にソート krsort($blog_arr); // 画面に出力 echo ''; for(reset($blog_arr); $key = key($blog_arr); next($blog_arr)) { echo $blog_arr[$key]; ++$count; if($count === $num) { // 表示記事文表示 break; } } echo ''; ?>
これでindex.phpを編集したので、TOPに
【画像】 【日付(降順)】 【記事タイトル】
このように表示させることができました
※ソースコード表示のプラグイン「SyntaxHighlighter」を使用していますが
改行などうまくできずにはみ出しています
設定はできているのですが。。。