WordPressにはSimplePieというrssを取得する仕組みがありますので、そちらを使用します。
作成手順
phpファイルの作成
以下で、指定されたフィードから SimplePie のオブジェクトを取得します。
つまり、「https://soricity.com/feed/」部分に取得したいフィードを入力すると、SimplePieによってRSSが表示されます。
なお、この部分について array 関数を使い、配列にすれば、複数の RSS フィードを同時に取得して、複数の RSS フィードを1つにまとめて時系列に並べて表示することもできます。
<h2><?php _e( '人気のあるニュース:', 'my-text-domain' ); ?></h2> <?php // RSS フィードを取得します。 include_once( ABSPATH . WPINC . '/feed.php' ); // 以下では二つのサイトのRSSを表示しています。 $rss = fetch_feed( array ( 'https://soricity.com/feed/', 'https://sukatto.info/feed' ) ); $maxitems = 0; if ( ! is_wp_error( $rss ) ) : // ちゃんとフィードが生成されているかをチェックします。 // すべてのフィードから最新20件を出力します。 $maxitems = $rss->get_item_quantity( 20 ); // 0件から始めて指定した件数までの配列を生成します。 $rss_items = $rss->get_items( 0, $maxitems ); endif; ?> <div class="rss_road"> <ul> <?php if ( $maxitems == 0 ) : ?> <li class="blogroll-list"><?php _e( 'No items', 'my-text-domain' ); ?></li> <?php else : ?> <?php // Loop through each feed item and display each item as a hyperlink. ?> <?php foreach ( $rss_items as $item ) : ?> <li class="blogroll-list"> <a href="<?php echo esc_url( $item->get_permalink() ); ?>" title="<?php printf( __( 'Posted %s', 'my-text-domain' ), $item->get_date('j F Y | g:i a') ); ?>"> <?php echo esc_html( $item->get_title() ); ?> </a> </li> <?php endforeach; ?> <?php endif; ?> </ul> </div><!--rss_road-->
上記をテキストエディタにて「fetch_feed.php」として保存して子テーマの中にアップロードします。
function.phpの編集
ショートコードをfunction.phpに登録して、先ほどのphpファイルを呼び出せるようにします。以下ではファイルの場所を子テーマの中という指定にしています。
//ショートコードを使ったphpファイルの呼び出し方法 function my_php_Include($params = array()) { extract(shortcode_atts(array('file' => 'default'), $params)); ob_start(); include(STYLESHEETPATH . "/$file.php"); return ob_get_clean(); } add_shortcode('myphp', 'my_php_Include');
WordPressのsimplepie
表示用のショートコード
[myphp file="fetch_feed"]
※上記[]は全角で記入してありますが実際は半角で使用します。
Date.php on line 694エラーの対処
下記のようなA non-numeric value encountered(数値以外の値があります)というエラーが表示された場合の対処になります。こちらのエラーはPHP7以降に表示されるエラーとのことで表示された場合の対処です。
Warning: A non-numeric value encountered in /home/example.com/public_html/wp-includes/SimplePie/Parse/Date.php on line 694
エラーの対策
DATEに関してなにやらエラーを吐き出すとのことで『/wp-includes/SimplePie/Parse/Date.php』 694行目の編集をおこないます。
$second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
(int)
を$matchの前に三か所挿入します。
$second = round((int)$match[6] + (int)$match[7] / pow(10, strlen((int)$match[7])));
以上で表示されていたwarningはなくなりRSSのみになります。
この対策ですがWordpressのコアファイルの編集となっているため、アップデートにより再度必要となるケースがあります。
4.9で問題なく動いていたものから5.1に変更したところ、同様の症状となり再度編集しました。
実践:simplepieのRSSを利用した相互RSSの手順
実際にsimplepieを使用したrssをcoconnに導入していきます。
rss表示用のphpファイルを作成
ファイル名を決めてsimplepieを利用しRSSを呼び出して表示します。
呼び出すRSSの指定、呼び出すタイトル数の指定をしたのちに、タグやクラスで成型をしやすくしています。
function.phpに呼び出し用のショートコードを登録
ファイルを呼び出すためのショートコードをファイルの場所の指定とともに、function.phpに登録をしておきます。
今回は子テーマの中のinphpというフォルダの中のファイルを呼び出す。という指定をしています。
FileZillaを利用してphpファイルをアップロード
先ほど指定をしておいた、inphpというフォルダを作成してその中にsimplepie呼び出し用のphpファイルを入れて、FileZillaでアップロードをします。
Googleタグマネージャに外部リンクタグとトリガーを登録
アナリティクスに外部リンクのクリックタグを設置
イベントカテゴリは外部リンク内でまずは名前を付ける。
詳細→条件と進んだら、フィルタ内、セッション、含めるとして、イベントラベル、正規表現に一致、ドメイン名/*として登録する。
スプレッドシートで送り数の結果確認
Googleアナリティクスアドオンの取得
アドオン→アドオンの取得からGoogleアナリティクスアドオンを取得します。
reportの作成
アドオン>Google Analytics>Create new report
Start Date 「30daysAgo」で30日前から取得。
End Date 「yesterday」で昨日までを取得
Dimensions 「ga:date」で1日ごとで表示
Metrics 「ga:users,ga:sessions,ga:pageviews」でユーザー数、セッション数、ページビュー数
Segments 「gaid::」に続けてセグメントキーが入ることでアナリティクスでのセグを判断している
以前作成したものに直接セグメントキーを追加することも可能
追加する際はこちらのサイトでセグメントのキーを調べることができます。
Query Explorer