Movable TypeのDataAPIで特定のカスタムフィールドを取得する方法
Movable TypeのDataAPIで特定のカスタムフィールドを取得する方法を紹介します。
1.はじめに
「Movable TypeのDataAPIでアクセスランキングを表示する方法」で「記事のカスタムフィールドを表示させたい」というご質問を頂きました。
ということで、特定のカスタムフィールドを取得する方法と、その応用でアクセスランキング内にカスタムフィールドデータを表示する方法を紹介します。
2.特定のカスタムフィールドを取得する
DataAPIで(特定の記事の)特定のカスタムフィールドを取得するPHPのコードは次のとおりです。
赤色部分は利用するサイトにあわせて適宜設定してください。
<?php
$cgi = 'http://user-domain/mt/mt-data-api.cgi'; // mt-data-api.cgiのURL
$domain = 'http://user-domain'; // サイトのドメイン
$siteId = ブログID;
$entryId = 記事ID;
$basename = 'カスタムフィールドのベースネーム';
$url = $cgi . '/v2/sites/' . $siteId . '/entries/' . $entryId;
@$response = file_get_contents($url);
if (!$response) {
echo "get entry failed:";
exit();
}
$entry = json_decode($response);
$size = count($entry->customFields);
for ($j = 0; $j < $size; $j++) {
$customField = $entry->customFields[$j];
if ($customField->basename == $basename) {
echo $customField->value;
}
}
?>
3.解説
データ取得に必要な基本情報を設定します。
$cgi = 'http://user-domain/mt/mt-data-api.cgi'; // mt-data-api.cgiのURL
$domain = 'http://user-domain'; // サイトのドメイン
$siteId = ブログID;
とりあえずここでは特定の記事IDを指定してください。
$entryId = 記事ID;
取得したいカスタムフィールドのベースネームを指定します。
$basename = 'カスタムフィールドのベースネーム';
URLを生成してfile_get_contents()で記事取得を実行します。
$url = $cgi . '/v2/sites/' . $siteId . '/entries/' . $entryId;
@$response = file_get_contents($url);
結果を判定し、NGであれば終了します。
if (!$response) {
echo "get entry failed:";
exit();
}
OKであればJSONをデコードして記事データを取得します。
$entry = json_decode($response);
カスタムフィールドのサイズを取得します。
$size = count($entry->customFields);
カスタムフィールドサイズ分処理を繰り返します。
for ($i = 0; $i < $size; $i++) {
:
}
for文の中でカスタムフィールドデータを取得します。
$customField = $entry->customFields[$i];
ベースネームが指定したものであれば、その値(=カスタムフィールドデータ)を出力します。
if ($customField->basename == $basename) {
echo $customField->value;
}
4.アクセスランキングでカスタムフィールドデータを出力する
「Movable TypeのDataAPIでアクセスランキングを表示する方法」のサンプルにある最後のfor文を次のように書き換えてください。
赤色が追加・変更部分です。
$basename = 'カスタムフィールドのベースネーム';
for ($i = 0; $i < $size; $i++) {
$item = $json->items[$i];
$url = $cgi . '/v2/sites/' . $siteId . '/entries/' . $item->entry->id;
@$response = file_get_contents($url);
if (!$response) {
echo "get entry failed.";
exit();
}
$entry = json_decode($response);
$size2 = count($entry->customFields);
for ($j = 0; $j < $size2; $j++) {
$customField = $entry->customFields[$j];
if ($customField->basename == $basename) {
$cf = $customField->value;
}
}
echo '<li><a href="' . $domain . $item->path . '">' . ($i+1) . "位:" . $item->title . $cf . '</a></li>';
}
Posted by yujiro このページの先頭に戻る
- MovableTypeのDataAPIでコンテンツデータをモーダル表示させる方法
- Movable TypeのWorkflowプラグインでDataAPIが利用可能になる「WorkflowDataAPIプラグイン」
- Movable TypeのDataAPIで記事を投稿するサンプル
- Movable TypeのDataAPIで「403 Forbidden」になる場合の対処
- Movable TypeのDataAPIでアクセスランキングを表示する方法
- Movable TypeとGoogle Analyticsの連携
- Movable Type Data APIの使い方:カスタムフィールド検索
- Movable Type Data APIの使い方:検索
- Movable Type Data APIの使い方:カスタムフィールド作成
- Movable TypeのData APIを有効・無効にする方法のまとめ
- Movable Type Data APIの使い方:uploadAsset()
- Movable Type Data APIの使い方:publishEntries()
- Movable Type Data APIの使い方:authenticate()
- Movable Type Data APIの使い方:paramsについて
- Movable Type Data APIの使い方:listEntries()
トラックバックURL
コメントする
greeting