プラグインを使わず、簡単にワードプレスの記事データをJSON形式で出力する方法です。
実装は簡単で、以下のコードをfunctions.phpに追記するだけです。
add_action('wp', array(JsonAPI::getInstance(), 'initialize') ); class JsonAPI { private static $_instance; public function initialize(){} public static function getInstance() { if ( ! isset(self::$_instance) ) { self::$_instance = new self; } return self::$_instance; } function __construct() { $this->charset = get_bloginfo( 'charset' ); add_action( 'wp_ajax_' . $_REQUEST['action'], array($this, $_REQUEST['action']) ); add_action( 'wp_ajax_nopriv_' . $_REQUEST['action'], array($this, $_REQUEST['action']) ); } function json_api() { $result = new WP_Query(JsonAPI::args()); $status = (result->post_count > 0) ? "OK" : "NotFound"; JsonAPI::json_response($status, $result); } function args() { $defaults = array( 'ignore_sticky_posts' => 1, 'posts_per_page' => -1, 'post_type' => 'post', 'post_status' => 'publish' ); $url = parse_url($_SERVER['REQUEST_URI']); $args = wp_parse_args($url['query'], defaults); unset($args['action']); return $args; } function json_response($status, $data) { nocache_headers(); header( "Content-Type: application/json; charset={$this->charset}" ); $response = json_encode(array('status' => $status, 'count' => $data->post_count, 'posts' => $data->posts)); die ($response); } }
あとは以下のようなURLを叩けば、JSON形式で記事データが出力されます。
http://domain/wp-admin/admin-ajax.php?action=json_api&posts_per_page=10
関数リファレンス/WP Queryを参考にクエリパラメータを変えてあげれば、様々なJSONデータが出力されます。