この記事はブロックされています。続きを読みたい方はログインをして下さい。会員ではない方は新規会員登録をして下さい。


ワードプレス魔改造 オートブログ講座2 第十ニ回目 ジョイントポストワン YARPPのデータ抽出

今回はスクリプト部分の作成です。
前回、プラグインのYARPPを設定しましたね。このプラグインは関連記事を表示する機能を持っています。 ジョイントポストワンは関連記事を抽出する機能を利用して、複数の記事を一つにまとめます。

というわけで、まずはYARPPのデータ抽出から行います。 YARPPのデータ抽出ですが、テンプレートに以下のコードを記述するだけで、その場所に関連記事が表示されます。

<?php related_posts(); ?>

通常はテンプレートに上記を記述しなくても記事の終わりに自動挿入されるのですが、細かく表示する場所を指定したい場合は<strong>自動表示の [ 投稿 ] のチェックをオフ</strong>にして下さい。これは前回やりましたね。

YARPP-表示設定
YARPP-表示設定
しかし、これだけでは不十分で、YARPPを呼び出す<strong>「related_posts();」</strong>に引数を与えます。
引数は3つ指定します。第一引数は投稿タイプかRSSタイプかの指定、第二引数には関連した記事を表示したい記事IDの指定、第三引数には出力のオン/オフの指定です。

今回は<strong>「&lt;?php related_posts(); ?&gt;」</strong>の記述とは別に、ジョイントポストワンでデータを加工するので、以下のように指定します。
//記事IDを取得
$target_id = $post->ID;

//YARPP用引数を配列にセット
$arg_type = array( 'post_type' => 'post', 'domain' => 'website');

//関連記事を取得
$related_posts = related_posts( $arg_type , $target_id , false );

これで今表示しているページの記事IDを指定し、ウェブ版の関連記事設定で、かつ関連記事の出力をしない、という指定となります。 最後に変数「$related_posts」には関連記事データが格納されます。単なるHTMLです。 例としてこのような形になっています。

<div class='yarpp-related'>
    <div id="YARPP-title">
        <h3>関連記事 まとめ</h3>
        <ol>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/25484/' rel='bookmark' title='【予知予言】 2014年1月……(省略)'>【予知予言】
                        2014年1月11日頃にどこかで大地震が起きる…?</a>
                    <div class="YARPP-post"> http://www.josephtittel.com/ ・【予言者】
                        ジョセフティテル 2014年 予言……(省略)</div>
                </li>
            </div>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/60465/' rel='bookmark' title='【風評被害】 福島でシラウ……(省略)'>【風評被害】
                        福島でシラウオ初水揚げ 「風評が心配…」</a>
                    <div class="YARPP-post"> 震災と福島第一原発の事故から間もなく3年。……(省略)</div>
                </li>
            </div>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/25549/' rel='bookmark' title='【隕石】 5……(省略)'>【隕石】
                        5メートルの小惑星2014AA! 地球に落下の可能性!もう大気圏に突入済み!</a>
                    <div class="YARPP-post"> 5メートルの小惑星 地球に落下の可能性 ……(省略)</div>
                </li>
            </div>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/48511/' rel='bookmark' title='【UFO】 那覇の夜空に謎の光……(省略)'>【UFO】
                        那覇の夜空に謎の光 目撃者複数 動画あり</a>
                    <div class="YARPP-post">  23日午後9時ごろ、那覇市上空で約10個のオレンジ……(省略)</div>
                </li>
            </div>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/48589/' rel='bookmark' title='ロシア非常事態省が警告……(省略)'>ロシア非常事態省が警告!2014年はクリル諸島、カムチャッカ半島で大地震の危険性!!</a>
                    <div class="YARPP-post"> ロシア非常事態省、2014年はクリル諸島、カムチャッカ半島で大……(省略)</div>
                </li>
            </div>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/53533/' rel='bookmark' title='関東人よ。その雪が火山灰なら……(省略)'>関東人よ。その雪が火山灰ならどうするよ?</a>
                    <div class="YARPP-post"> 急速に発達する低気圧の影響で、西から東日本の……(省略)</div>
                </li>
            </div>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/55972/' rel='bookmark' title='【月】 重さ400kgの隕石が衝突 観測……(省略)'>【月】
                        重さ400kgの隕石が衝突 観測史上最大の閃光</a>
                    <div class="YARPP-post"> [ケープカナベラル(米フロリダ州) 25日 ロイター] -昨年9月に月面に隕石が衝突し……(省略)</div>
                </li>
            </div>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/47908/' rel='bookmark' title='110頭余のクジラ海岸に………(省略)'>110頭余のクジラ海岸に…</a>
                    <div class="YARPP-post"> ニュージーランドの海岸に、今月に入って合わせて100頭余りのゴンド……(省略)</div>
                </li>
            </div>
            <div class="YARPP-list">
                <li><a href='http://lesson-school.com/none/62376/' rel='bookmark' title='多くの人が悩む不可思議な症状 – 医者も……(省略)'>多くの人が悩む不可思議な症状 – 医者も「分からない」</a>
                    <div class="YARPP-post"> 奇妙な痛みが数週間続いたり、最近強い疲労感を……(省略)</div>
                </li>
            </div>
        </ol>
    </div>
</div>

このHTMLから関連した記事の記事IDを抽出します。

しかし、困ったことにデータではなくただのHTMLなので、記事IDだけを抽出する必要があります。 記事IDはリンクに含まれているので「a」タグの「href」属性のデータだけが必要です。

ワードプレスのパーマリンク設定にもよるのですが、記事のURLを記事IDにしている場合はこのような感じになります。

href=’http://lesson-school.com/none/25484/’

で、「25484」という数字が記事IDなので、それ以外は不要です。

HTMLから記事IDだけを抽出するには「php simple html dom parser」というPHPのライブラリが便利なので利用します。GitHubからダウンロードできるのでダウンロードして下さい。 以前の講座でダウンロード済みの方は飛ばして下さい。

右サイドバーの [ Download ZIP ] というボタンからダウンロード
右サイドバーの [ Download ZIP ] というボタンからダウンロード
▼GitHubからダウンロード
php-simple-html-dom-parser - PHP Simple HTML DOM Parser adaptation for Composer and PSR-0

右サイドバーの [ Download ZIP ] というボタンからダウンロード可能です。 ZIPファイルを解凍したら中のフォルダを辿っていき「simple_html_dom.php」というファイルを見つけます。

このファイルをテンプレートのテーマフォルダにコピーしてアップロードして下さい。 因みに私の場合はこうなります。

http://lesson-school.com/mhs/wp-content/themes/mhs/simple_html_dom.php

「php simple html dom parser」は以下のようにファイルから読み込みます。

//PHP Simple HTML DOM Parserのライブラリ読み込み
require_once dirname(__FILE__) . '/simple_html_dom.php';

もし使っていてエラーが出る場合は、既にサーバーにインストールされているか、どこかのテンプレートで使用されている場合があります。二重に読み込みするとエラーとなるので、その場合は上記の記述を消しておきます。

「php simple html dom parser」の使い方ですが、以下のようにして使います。 細かい説明は省きますが、DOMをスクレイピングするのに便利です。

▼php simple html dom parserの解説ページはこちらを参考にしてみてください http://www.crystal-creation.com/web-appli/technical-information/programming/php/library/simplehtmldom/

関連記事