ellsif blog

愛知のフリーランス プログラマのメモ書きなど

" JSON " のアーカイブ

WordPressのJSON APIを使う(その2 実装)

WordPressのJSON APIを使う(その1 検証)でJSON取得まで確認しました。

以下がJSON APIをPHPから使うサンプルです。

<?php
  // ブログ記事の取得(contentsのカテゴリから4件取得)
  $api_url = 'http://ellsif.com/blog/?json=get_category_posts&slug=contents&count=4';

  if ($json = file_get_contents($api_url)) {
    $wp_posts = json_decode($json);
    
    if ($wp_posts) {
      foreach($wp_posts->posts as $post) {
        $title = $post->title_plain;  // タイトル
        $excerpt= $post->excerpt;     // 本文要約
        $url = $post->url;            // 記事のURL
        $date = date('Y/m/d', strtotime($post->date));  // 投稿日(公開日?)を取得

        // HTMLに書き出す
        echo '<div class="blog_content">';
        echo '<h3>'.$title.'</h3>';
        echo $excerpt;
        echo '<a href="'.$url.'" target="_blank">続きを読む</a>';
        echo '</div>';
      }
    }
  }
?>

WordPressのJSON APIを使う(その1 検証)

WordPressのJSON APIプラグインを試してみました。
(2013/11/21 一部修正)

やりたいこと

  • WordPressの新着投稿記事を他のページ(サイトトップ)に表示したい
  • サイトトップに出す記事はカテゴリーを制限したい
  • できれば.phpでなく.htmlのままでやりたい

ということで、WordPressから記事情報をJSON形式で取得し、JSで整形して表示する方式にします。
(htmlにjsで出力したらSEO的にダメでしょ!とのツッコミを受け、phpでJSONを受けるように変更)

プラグインのインストール

  1. プラグインのインストールから「JSON」で検索し、検索結果の中から「JSON API」を「いますぐインストール」
  2. インストール完了後、「プラグインを有効化」
  3. ブラウザから”[WordPressのURL]/?json=get_category_posts&id=1″にアクセス
  4. カテゴリーが1(未分類)の投稿がJSONで取れる

こんな感じのJSONが取れます(未分類の記事が無い場合)

{
    "status": "ok",
    "count": 0,
    "pages": 0,
    "category": {
        "id": 1,
        "slug": "%e6%9c%aa%e5%88%86%e9%a1%9e",
        "title": "未分類",
        "description": "",
        "parent": 0,
        "post_count": 0
    },
    "posts": []
}

プラグインの使い方

基本的には「JSON API のドキュメント」に従います。

やりたかったのは

  • カテゴリーが”お知らせ”の記事を、サイトのお知らせとして表示する
  • カテゴリーが”お知らせ”以外の記事を、サイトのブログ新着記事として表示する

なので、それぞれ

  • http://ellsif.com/blog/?json=get_category_posts&slug=info&count=2
  • …(;゚д゚)ァ….

残念ながら2つ目が取得できませんでした。
「~以外」の指定はできないようです。

(2013/11/21 追記)
結局、カテゴリを階層毎に分ける事で対応しました。

・お知らせ (slugにinfoを指定)
・ブログ記事 (slugにcontentsを指定)
 |- JavaScript
 |- PHP
 |- …

これで取ります。

  • http://ellsif.com/blog/?json=get_category_posts&slug=info&count=2
  • http://ellsif.com/blog/?json=get_category_posts&slug=contents&count=4