2026年8月7日

2026年8月7日

wordpress cpt rest api endpoint

はじめに

カスタム投稿タイプ(Custom Post Type、CPT)を活用したWordPressサイトでは、より柔軟なデータ管理や高度な機能実装が可能です。特にモダンなWebアプリケーション開発においてはREST APIの利用が一般的であり、カスタム投稿タイプとREST APIを組み合わせることで、バックエンドとの通信やクライアントサイドでのデータ操作を容易に行うことができます。

この記事では、カスタム投稿タイプ用のREST APIエンドポイントを作成する方法について解説します。これにより、WordPressサイト上でAPIを利用した高度な機能実装が可能になります。

症状・背景

  • カスタム投稿タイプを導入し、それらに対するデータ操作を行うための自動化が必要になった。
  • モバイルアプリや他のシステムからWordPressのカスタム投稿タイプにアクセスしたい。
  • サイト管理者以外にも、特定のカスタム投稿タイプへのアクセス権限を与える必要がある。

手順・設定方法

ステップ1: REST APIエンドポイントの作成

# WordPressプラグイン「Advanced Custom Fields」でカスタムフィールドを作成する。
add_action( 'rest_api_init', function () {
	register_rest_field( 'cpt_name', // カスタム投稿タイプ名
		'field_name', // フィールド名
		array(
			'get_callback'    => 'get_custom_field_value',
			'update_callback' => null,
			'schema'          => null,
		)
	);
}

# ここで、カスタムフィールドの値を取得する関数を定義します。
function get_custom_field_value( $object, $field_name, $request ) {
	return get_post_meta( $object['id'], 'field_name', true );
}

ステップ2: デフォルトAPIエンドポイントへのカスタムフィールドの追加

# カスタム投稿タイプ用にカスタムフィールドを取得するためのメタボックスを追加します。
function add_custom_field_to_rest( $data, $post, $context ) {
	if ( 'cpt_name' !== $post->post_type ) { // 必要なカスタム投稿タイプ名を指定
		return $data;
	}
	
	$meta = get_post_meta( $post->ID );
	foreach ( $meta as $key => $values ) {
		$data['meta'][ $key ] = maybe_unserialize( $values[0] );
	}

	return $data;
}

add_filter( 'rest_prepare_cpt_name', 'add_custom_field_to_rest' ); // カスタム投稿タイプ名を指定

ステップ3: REST APIエンドポイントに対する認証の追加

# ユーザーがログインしている場合のみ、REST APIのカスタム投稿タイプ情報を取得できるようにします。
function my_custom_rest_authentication( $result, $post ) {
	if ( ! is_user_logged_in() ) {
		return new WP_Error(
			'rest_not_logged_in',
			__( 'エラー: ログインが必要です。', 'textdomain' ),
			array( 'status' => 401 )
		);
	}

	return $result;
}
add_filter( 'rest_prepare_cpt_name', 'my_custom_rest_authentication' ); // カスタム投稿タイプ名を指定

ステップ4: REST APIエンドポイントのテスト

# cURLコマンドでREST APIエンドポイントにアクセスして、JSON形式でデータが返却されることを確認します。
curl -X GET https://example.com/wp-json/wp/v2/cpt_name/1

注意事項

  • REST APIエンドポイントの作成は、サイト管理者によって慎重に行うべきです。公開範囲やアクセス権限について十分な検討が必要です。
  • カスタムフィールドを取得する際には、データ型の適切な変換やセキュリティ対策も忘れずに実装してください。
  • APIエンドポイントにアクセスする際に使用されるURLは、サイトのホスト名とHTTP/HTTPSプロトコルによって異なることに注意してください。

まとめ

1. カスタム投稿タイプ: REST APIを通じてデータを操作できるようにカスタム投稿タイプを作成します。

2. フィールド追加: カスタムフィールドを取得するためのメタボックスを追加し、REST APIエンドポイントに必要な情報を提供します。

3. 認証: ユーザーがログインしている場合のみデータアクセスを許可することでセキュリティを強化します。

4. テスト: エンドポイントが正常に機能するか確認するために、cURLコマンドなどでREST APIエンドポイントにアクセスします。

関連記事:

お気軽にご相談ください

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