拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
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
