全国1000万3人のファンもみなさま。
お疲れさまです。
VAXだよ。
先ほど阿蘇山が噴火したようです。。。
最近の日本はなんかいろいろありすぎてあれですね。。。。
さて、今回はきっとどこかに需要があるであろうwordpressの記事データをAPIを使って取ってみたいと思います。
どんな場面で使うかと言いますと
自社サイトなんかではwordpressを入れてなくて別サーバーでブログをやっている。
あーブログの記事も自社サイトに表示させてーなってなったときです。
あるよねー
きっとある。
もしくは気になるあの子やあの子、なんならもうみんなに自分をもっと見てほしい!
そんな欲求を叶えるものです。
うん。
ではまずはwordpressをインストールサーバーに
ファイルを設置しましょう!
get_data.php
中身は
<?php
require_once('../blog/wp-load.php');
$showposts = (isset($_GET["showposts"]) && !empty($_GET["showposts"])) ? $_GET["showposts"] : "";
$cat = (isset($_GET["cat"]) && !empty($_GET["cat"])) ? $_GET["cat"] : "-1";
$data =array();
// 一覧取得
query_posts( array( 'showposts' => $showposts,
'cat' => $cat,
'post_status' => 'publish' )
);
while (have_posts()) : the_post();
$cats="";
// 投稿日時
$blog_date = the_time('Y.m.d');
// ブログタイトル
$blog_title = get_the_title();
// ページID
$link_id = get_the_ID();
// アイキャッチ情報
if(has_post_thumbnail()) {
$image_id = get_post_thumbnail_id();
list($image_url, $image_width, $image_height) = wp_get_attachment_image_src($image_id, full);
} else {
$image_url = "";
$image_width = "";
$image_height ="";
}
// ?ページ内容
$get_the_content = str_replace(array(" ","\r\n","\n","\r"), '', strip_tags(get_the_content()) );
$text_check = ( mb_strlen($get_the_content) > 120 ) ? mb_substr($get_the_content ,0, 120) . '...' : $get_the_content;
$data[] = array('date' => $blog_date,
'title' => $blog_title,
'pid' => $link_id,
'image_url' => $image_url,
'content' => $content
);
endwhile;
wp_reset_query();
//jsonとして出力
header('Content-type: application/json');
echo json_encode($data);
}
?>
// ページ内容この部分は
ページ内容をそのまま取るとすごく長くなるので
アーカイブなどで使うようにしてあります。
全文取る場合は
'content' => $content
この部分を
'content' => get_the_content()
に変えてください。
require_once('../blog/wp-load.php');
この部分のパスはファイルを設置した場所によって異なります。
例えば
wordpressを設置した場所が
example.com/blog/
get_data.phpの設置した場所が
example.com/get_data.php
この場合
require_once('./blog/wp-load.php');
こうなります。
これで例えば
エフエフエフエフマンのカテゴリー情報を取得する場合
category の id が 4
全ての場合は -1
コチラの情報を元に URLを構成すると
//www.e-f.co.jp/demo/2015/get_json.php?showposts=-1&cat=4
こちらにアクセスすると
[{"date":"2015.07.25",
"title":"\u3046\u3064\u75c5\u306e\u30d2\u30fc\u30ed\u30fc\uff1f \u30a8\u30d5\u30a8\u30d5\u30a8\u30d5\u30a8\u30d5\u30de\u30f3vs\u53f0\u98a811\u53f7",
"pid":4424,
"url":"http:\/\/www.e-f.co.jp\/blog\/2291\/",
"image_url":"http:\/\/www.e-f.co.jp\/wp\/wp-content\/uploads\/2015\/07\/0\u30a2\u30a4\u30ad\u30e3\u30c3\u30c101.jpg",
"content":"\u307f\u...(略) "},
こんな感じで json データとして固まりがいくつか出てきます。
これを使って表示側で処理します。
<?php
$get_data = "https://www.e-f.co.jp/demo/2015/get_data.php?showposts=-1&cat=4";
$json = @file_get_contents($get_data);
if ($json === false) {
echo "データ取得失敗。";
return;
} else {
$obj = json_decode($json, true);
for ($i =0;? $i < count($obj ); $i++){
echo '投稿日時:' . $obj?[$i]["date"]?.'<br>';
echo?'タイトル:' . $obj?[$i]["title"]?.'<br>';
echo?'記事ID:' . $obj?[$i]["pid"]?.'<br>';
echo?'記事URL:' . $obj?[$i]["url"]?.'<br>';
echo?'アイキャッチ画像:' . $obj?[$i]["image_url"]?.'<br>';
echo?'記事内容:' . $obj?[$i]["content"] .'<br>';
}
}
?>
こういった感じで吐き出します。
あとは処理側でリスト形式にしたり、記事の詳細を取ってきたりいろいろ応用ができると思います。
次回は この応用で簡単なスケジュールカレンダーを作ってみたいと思います。
時の経つのは早いものでもうすぐ秋です。
おでんと熱燗の時期です。
間違いありません!!
楽しく秋の味覚が楽しめるようみんな頑張っていきましょう!