「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
PHP/VBA用Data APIライブラリでのカテゴリの並べ替え
Movable TypeのData APIバージョン2では、カテゴリを並べ替えるAPIもあります。
PHP用およびVBA用のData APIライブラリで、カテゴリを並べ替える方法を紹介します。
なお、これに合わせてライブラリを修正しました。
1.修正版のダウンロード
修正版のライブラリは、それぞれ以下からダウンロードします。
2.permutateCategoriesエンドポイント
カテゴリの並べ替えは、「permutateCategories」というエンドポイントで行います。
「categories」というパラメータに、以下のようなJSON文字列を渡します。
それぞれの「カテゴリのID」の箇所に、並べ替え後の各カテゴリのIDを入れます。
なお、ウェブサイト(またはブログ)内のすべてのカテゴリを指定する必要があります。
[ {"id": カテゴリのID}, {"id": カテゴリのID}, ・・・ {"id": カテゴリのID} ]
例えば、あるウェブサイト(またはブログ)にIDが1/2/3の3つのカテゴリがあるとします。
また、これらのカテゴリをIDが3/2/1の に並べたいとします。
この場合、以下のようなJSON文字列を渡します。
[ {"id": 3}, {"id": 2}, {"id": 1} ]
3.PHP版ライブラリでの例
PHP用ライブラリでは、以下のようなコードでカテゴリを並べ替えることができます。
カテゴリの配列を渡すと、ライブラリ内でJSON文字列に変換します。
require_once('mt-data-api.php'); // 初期化 $api = new MTDataAPI('http://your-host/path-to-mt/mt-data-api.cgi', 'クライアントID'); // 認証 $response = $api->authenticate(array('username' => 'ユーザー名', 'password' => 'パスワード')); if (isset($response['error'])) { 認証失敗時の処理 } // カテゴリの並べ替え $params = array( 'categories' => array( array('id' => カテゴリのID), array('id' => カテゴリのID), ・・・ array('id' => カテゴリのID) ) ); $response = $api->permutateCategories(サイトID, $params); if (isset($response['error'])) { 並べ替え失敗時の処理 }
4.VBA版ライブラリでの例
PHP版ライブラリでのプログラムをVBAに置き換えると、以下のリストのようになります。
Dim api As MTDataAPI Dim response As Object Dim params As Scripting.Dictionary, cat As Scripting.Dictionary, cats As Collection ' 初期化 Set api = New MTDataAPI api.init "http://your-host/path-to-mt/mt-data-api.cgi", "クライアントID" ' 認証 Set params = New Scripting.Dictionary params("username") = "ユーザー名" params("password") = "パスワード" Set response = api.send("authenticate", params) If response.Exists("error") Then 認証失敗時の処理 End If ' カテゴリの並べ替え Set params = New Scripting.Dictionary Set cats = New Collection Set cat = New Scripting.Dictionary cat("id") = カテゴリのID cats.Add cat Set cat = New Scripting.Dictionary cat("id") = カテゴリのID cats.Add cat ・・・ Set cat = New Scripting.Dictionary cat("id") = カテゴリのID cats.Add cat Set params("categories") = cats Set response = api.send("permutateCategories", サイトID, params) If TypeName(response) <> "Collection" Then If response.Exists("error") Then カテゴリ並べ替え失敗時の処理 End If End If