-
목차
🔗 워드프레스 REST API란?
워드프레스는 기본적으로 REST API를 제공합니다.
이는 외부 애플리케이션(React, Vue, 앱 등)과의 데이터 통신 인터페이스로,
JSON 형식으로 데이터를 주고받을 수 있게 해줍니다.위와 같이 /wp-json 하위에 엔드포인트를 호출하면,
워드프레스의 게시글 데이터 등을 외부에서 호출할 수 있습니다.
🧠 기본 개념 요약
구성 요소설명wp-json 모든 REST API의 루트 wp/v2 기본 API 버전 (워드프레스 코어에서 제공) posts, pages, users 각각의 데이터 유형 (엔드포인트) 응답 형식 JSON 객체 인증 기본은 비공개 데이터 제한 → JWT, OAuth 등 사용 가능
📦 REST API 커스터마이징이 필요한 이유
기본 API만으로는 아래가 어렵습니다:
- 특정 조건의 데이터만 불러오기
- 커스텀 포스트 타입(CPT) 사용 시 별도 출력
- 필드 숨기기/추가하기
- 외부 프론트엔드와 맞춤 통신 필요
👉 그래서 필요한 것이 바로 Custom REST API Endpoint입니다.
✅ 커스텀 REST API 엔드포인트 만들기 (기본형)
1. functions.php 또는 전용 플러그인에 삽입
php복사편집add_action('rest_api_init', function () { register_rest_route('custom/v1', '/hello/', array( 'methods' => 'GET', 'callback' => 'custom_hello_world', )); }); function custom_hello_world() { return ['message' => '안녕하세요! 워드프레스 API입니다']; }📌 호출 URL:
🧩 커스텀 포스트 타입 데이터 출력 예시
php복사편집register_rest_route('custom/v1', '/projects/', array( 'methods' => 'GET', 'callback' => 'get_project_posts', )); function get_project_posts($request) { $posts = get_posts(array( 'post_type' => 'project', 'numberposts' => 5, )); $data = []; foreach ($posts as $post) { $data[] = array( 'id' => $post->ID, 'title' => get_the_title($post), 'link' => get_permalink($post), 'excerpt' => get_the_excerpt($post), ); } return rest_ensure_response($data); }
🔐 보안 이슈: 인증 없이 데이터 노출 위험
기본적으로 비공개 정보, 사용자 정보, 커스텀 필드 값은
비로그인 사용자에게 노출되지 않도록 조치 필요.인증 방법 2가지
방식특징✅ JWT 인증 (JSON Web Token) 프런트에서 토큰 발급 → 요청 시 Authorization 헤더로 전달 ✅ Nonce 인증 워드프레스 로그인 사용자의 Ajax 요청에 활용 (ex: wp_create_nonce('wp_rest'))
🔄 REST API로 데이터 추가/수정하기
php복사편집register_rest_route('custom/v1', '/submit/', array( 'methods' => 'POST', 'callback' => 'submit_custom_post', 'permission_callback' => function () { return current_user_can('edit_posts'); } )); function submit_custom_post($request) { $params = $request->get_json_params(); $title = sanitize_text_field($params['title']); $post_id = wp_insert_post(array( 'post_title' => $title, 'post_status' => 'publish', 'post_type' => 'project', )); return ['status' => 'success', 'post_id' => $post_id]; }REST API는 단순 조회뿐 아니라 데이터 생성/수정/삭제까지 모두 처리 가능합니다.
💡 응답 커스터마이징 팁
REST API 응답을 커스터마이징하려면 register_rest_field()를 사용합니다.
php복사편집register_rest_field('post', 'subtitle', array( 'get_callback' => function($post_arr) { return get_post_meta($post_arr['id'], 'subtitle', true); }, 'schema' => null, ));📌 이제 /wp-json/wp/v2/posts에서 subtitle 필드가 추가로 보입니다.
✅ REST API 활용 체크리스트
항목완료 여부커스텀 엔드포인트 등록 ✅ / ❌ REST 응답 필터링/추가 ✅ / ❌ 인증 방식 구성 (JWT/Nonce) ✅ / ❌ 외부 앱/API 연동 테스트 완료 ✅ / ❌ 권한 제어 및 보안 점검 ✅ / ❌ '워드프레스' 카테고리의 다른 글
🧠 왜 직접 플러그인을 만들어야 할까? (2) 2025.04.25 🧠 왜 DB 구조를 이해해야 하는가? (2) 2025.04.25 🔄 AJAX가 필요한 이유 (1) 2025.04.25 🧠 왜 커스텀 포스트 타입(CPT)이 필요한가? (1) 2025.04.25 🧠 functions.php란 무엇인가? (3) 2025.04.24 📱 워드프레스를 앱처럼 운영하는 3단계 전략 (2) 2025.04.23 💬 워드프레스와 챗봇 연동 전략 (1) 2025.04.22 🎨 워드프레스 테마 변경 시 유의사항 (2) 2025.04.22