2026年6月3日

2026年6月3日

ACFのデータをREST APIで取得する方法

はじめに

カスタムフィールドプラグイン「Advanced Custom Fields (ACF)」は、WordPressサイトでのデータ管理やカスタマイズにおいて広く使用されています。本記事では、ACFで定義されたカスタムフィールドのデータをREST API経由で取得する方法について解説します。

症状・背景

このテーマが必要になる主な場面:

  • ACFで設定したカスタムフィールドのデータを外部アプリケーションから取得したい場合
  • WordPressサイトのフロントエンド部分とバックエンド部分を分離して開発する際
  • モバイルアプリや他のウェブサイトとの連携が必要な場合

手順・設定方法

ステップ1: ACFにカスタムフィールドを追加または定義する

# ACFプラグインを使用して新しいカスタムフィールドグループを作成します。
acf_add_options_page(array(
    'page_title'  => 'Global Settings',
    'menu_title'   => 'Global Settings',
    'menu_slug'    => 'global-settings',
    'capability'  => 'edit_posts',
    'parent_slug' => '',
));

# グループ内に新しいフィールドを追加します。
acf_add_local_field_group(array(
    'key' => 'field_5e487b6d0f9a3',
    'title' => 'Global Settings',
    'fields' => array(
        array(
            'key' => 'field_5e487b6d0f9a4',
            'label' => 'Site URL',
            'name' => 'site_url',
            'type' => 'text',
        ),
    ),
));

ステップ2: REST APIにACFデータを追加する

# ACFのオプションページからデータを取得します。
$acf_data = get_fields('option', 'global-settings');

# REST API経由でデータを返却できるように設定します。
add_action( 'rest_api_init', function () {
    register_rest_field( 'post', 'custom_acf_data', array(
        'get_callback' => function ( $data ) {
            return get_fields($data['id']);
        },
        'schema' => null,
    ));
});

ステップ3: データの取得と使用

# REST API経由でACFデータを取得します。
curl -X GET "https://example.com/wp-json/wp/v2/posts/1?acf=true" \
     -H "Authorization: Basic base64-encoded-user-password"

# 取得したデータを使用してページを作成します。
$acf_data = json_decode($response->getBody(), true);
echo $acf_data['custom_acf_data']['site_url'];

ステップ4: セキュリティとパフォーマンスの最適化

# REST API経由でのデータ取得はセキュアにするために認証を必要とします。
add_filter( 'rest_authentication_errors', function ( $errors ) {
    if ( isset( $_SERVER['HTTP_AUTHORIZATION'] ) && preg_match( '/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches ) ) {
        list($user, $password) = explode(':', base64_decode( $matches[1] ), 2);
        $user = wp_signon( array('user_login' => $user, 'user_password' => $password), false );
        if ( is_wp_error( $user ) )
            return new WP_Error( 'rest_invalid_request', sprintf(__('Invalid HTTP Authorization header received.')), array( 'status' => 401 ) );
    }
});

注意事項

  • ACFプラグインの最新バージョンを使用すること
  • REST API経由でのデータ取得には必ず認証を用いること
  • 過度なAPI呼び出しはパフォーマンスに影響を与える可能性があるため、適切なキャッシュ設定を行うこと

まとめ

1. ACFのカスタムフィールド定義: カスタムフィールドグループとその中のフィールドを正しく定義することが重要です。

2. REST APIへのデータ追加: データがREST API経由で取得できるように適切な設定を行うこと

3. セキュリティの確保: REST APIへのアクセスには強力な認証が必要です

4. パフォーマンス最適化: キャッシュなどの最適化技術を活用してAPI呼び出しの負荷を軽減すること

5. テストとデバッグ: データ取得の実装が正しい動作をしているか確認するため、事前テストとデバッグを行うこと

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ