概要
register_rest_field関数は、REST APIリクエスト時、WordPressオブジェクトに対してフィールドを追加するための関数です。この関数を使用することで、デフォルトのレスポンスにカスタムフィールドを追加し、APIの利用者に必要なデータを提供することができます。この関数は、特に以下のような機能を実装する際によく使われます:
- 投稿にカスタムメタデータを追加する
- タクソノミーに関する追加情報を提供する
- カスタム投稿タイプの拡張
- ユーザープロフィールにカスタムデータを統合
- プラグインの設定情報をREST APIで取得可能にする
- 特定の条件に基づいたデータを返すフィルタリング
- 外部APIから取得したデータをレスポンスに組み込む
- 特定のエンドポイント専用のデータ構造を提供する
構文
register_rest_field( $post_type, $field_name, $args );
パラメータ
$post_type(string) – フィールドを追加したい投稿タイプ$field_name(string) – 追加するフィールドの名前$args(array) – カスタムフィールドの設定オプションを含む配列
戻り値
特に戻り値はありませんが、指定されたフィールドがREST APIのレスポンスに追加されます。
関連する関数
使用可能なバージョン
register_rest_field関数は、WordPress 4.7で導入されました。
コアファイルのパス
wp-includes/rest-api.php
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | 〇 |
| plugins_loaded | 〇 |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | 〇 |
| register_sidebar | |
| wp_loaded | 〇 |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
サンプルコード 1: 投稿にカスタムメタデータを追加する
add_action('rest_api_init', function () {
register_rest_field('post', 'custom_field', [
'get_callback' => function ($data) {
return get_post_meta($data['id'], 'custom_field_key', true);
}
]);
});
このコードは、投稿のレスポンスにcustom_fieldというフィールドを追加し、投稿メタからその値を取得します。
サンプルコード 2: タクソノミー情報を追加する
add_action('rest_api_init', function () {
register_rest_field('category', 'additional_data', [
'get_callback' => function ($data) {
return get_term_meta($data['id'], 'meta_key', true);
}
]);
});
このコードは、カテゴリにadditional_dataフィールドを追加し、その値をタクソノミーメタから取得します。
サンプルコード 3: カスタム投稿タイプの拡張
add_action('rest_api_init', function () {
register_rest_field('my_custom_post', 'extra_info', [
'get_callback' => function ($data) {
return get_post_meta($data['id'], '_extra_info', true);
}
]);
});
このコードは、カスタム投稿タイプmy_custom_postにextra_infoフィールドを追加し、メタデータを取得します。
サンプルコード 4: ユーザー情報にカスタムデータを統合する
add_action('rest_api_init', function () {
register_rest_field('user', 'user_extra_data', [
'get_callback' => function ($data) {
return get_user_meta($data['id'], 'user_meta_key', true);
}
]);
});
このコードは、ユーザー情報にuser_extra_dataフィールドを追加し、ユーザーメタからその値を取得します。
サンプルコード 5: プラグインの設定情報を取得可能にする
add_action('rest_api_init', function () {
register_rest_field('plugin_settings', 'settings_data', [
'get_callback' => function () {
return get_option('my_plugin_settings');
}
]);
});
このコードは、プラグインの設定情報をREST APIにsettings_dataフィールドとして追加します。
引用元:WordPress Codex、WordPress Developer Resources