Wordpress とスマホアプリを連携させるのに JSON を使っています。WP が出力した JSON を、iPhoneアプリで読むのです。JSON API という、拡張性の高いプラグインがあったので、これを利用しました。

JSON API プラグインに対して、「コントローラ」というクラスを登録します。すると、コントローラのメソッドが JSON API としてアクセスできるようになります。Rails のコントローラクラスの仕組みと似ています。

必要なのは、フック2つと、コントローラクラス1つです。まず、JSON_API_Hello_Controller クラスを作ります。

<?php

class JSON_API_Hello_Controller {

public function hello_world() { return array( “message” => “Hello, world” ); }

} ?> </code>

これをフックで登録します。

// カスタムコントローラを登録します add_filter('json_api_controllers', 'add_hello_controller');

function add_hello_controller($controllers) { // JSON_API_Hello_Controller に対応します $controllers[] = ‘Hello’; return $controllers; }

// JSON_API_Hello_Controller.php のパスを指定します add_filter(‘json_api_widgets_controller_path’, ‘hello_controller_path’);

function hello_controller_path($default_path) { return ‘/path/to/JSON_API_Hello_Controller.php’; } </code>

さらに、wp-admin の管理画面で JSON API の設定を開き、Helloコントローラを有効にします。これがわからなくて、時間を無駄にしました。

ここまでやると、http://example.com/?json=hello.hello_word というURLで Helloコントローラの hello_world() メソッドが呼ばれるようになります。

クエリストリング(URLパラメタ)を見て動作を変えたい場合は、グローバル変数 $json_api から取得できます。

public function hello_person() { global $json_api; $name = $json_api->query->name; return array( "message" => "Hello, $name." ); }