RSSリーダーをWordPress標準のsimplepieで出力

WordpressでRSS WordPress

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タグマネージャで外部リンクのクリック数を計測する(2017年最新版) | ビジネスとIT活用に役立つ情報(株式会社アーティス)
Webサイトを運営していると、外部サイトリンクのクリック数、PDFのダウンロード数などを計測したい場合があります。Google Analyticsの通常の設定では、これらを計測することができませんが、「イベントトラッキン...

アナリティクスに外部リンクのクリックタグを設置

イベントカテゴリは外部リンク内でまずは名前を付ける。

詳細→条件と進んだら、フィルタ内、セッション、含めるとして、イベントラベル、正規表現に一致、ドメイン名/*として登録する。

スプレッドシートで送り数の結果確認

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

https://ga-dev-tools.appspot.com/query-explorer/