wp-rest-api

작성자: firecrawl

WordPress REST API 엔드포인트/라우트를 구축, 확장 또는 디버깅할 때 사용: register_rest_route, WP_REST_Controller/컨트롤러 클래스, 스키마/인수…

npx skills add https://github.com/firecrawl/agent-skills --skill wp-rest-api

WP REST API

When to use

Use this skill when you need to:

  • create or update REST routes/endpoints
  • debug 401/403/404 errors or permission/nonce issues
  • add custom fields/meta to REST responses
  • expose custom post types or taxonomies via REST
  • implement schema + argument validation
  • adjust response links/embedding/pagination

Inputs required

  • Repo root + target plugin/theme/mu-plugin (path to entrypoint).
  • Desired namespace + version (e.g. my-plugin/v1) and routes.
  • Authentication mode (cookie + nonce vs application passwords vs auth plugin).
  • Target WordPress version constraints (if below 6.9, call out).

Procedure

0) Triage and locate REST usage

  1. Run triage:
    • node skills/wp-project-triage/scripts/detect_wp_project.mjs
  2. Search for existing REST usage:
    • register_rest_route
    • WP_REST_Controller
    • rest_api_init
    • show_in_rest, rest_base, rest_controller_class

If this is a full site repo, pick the specific plugin/theme before changing code.

1) Choose the right approach

  • Expose CPT/taxonomy in wp/v2:
    • Use show_in_rest => true + rest_base if needed.
    • Optionally provide rest_controller_class.
    • Read references/custom-content-types.md.
  • Custom endpoints:
    • Use register_rest_route() on rest_api_init.
    • Prefer a controller class (WP_REST_Controller subclass) for anything non-trivial.
    • Read references/routes-and-endpoints.md and references/schema.md.

2) Register routes safely (namespaces, methods, permissions)

  • Use a unique namespace vendor/v1; avoid wp/* unless core.
  • Always provide permission_callback (use __return_true for public endpoints).
  • Use WP_REST_Server::READABLE/CREATABLE/EDITABLE/DELETABLE constants.
  • Return data via rest_ensure_response() or WP_REST_Response.
  • Return errors via WP_Error with an explicit status.

Read references/routes-and-endpoints.md.

3) Validate/sanitize request args

  • Define args with type, default, required, validate_callback, sanitize_callback.
  • Prefer JSON Schema validation with rest_validate_value_from_schema then rest_sanitize_value_from_schema.
  • Never read $_GET/$_POST directly inside endpoints; use WP_REST_Request.

Read references/schema.md.

4) Responses, fields, and links

  • Do not remove core fields from default endpoints; add fields instead.
  • Use register_rest_field for computed fields; register_meta with show_in_rest for meta.
  • For object/array meta, define schema in show_in_rest.schema.
  • If you need unfiltered post content (e.g., ToC plugins injecting HTML), request ?context=edit to access content.raw (auth required). Pair with _fields=content.raw to keep responses small.
  • Add related resource links via WP_REST_Response::add_link().

Read references/responses-and-fields.md.

5) Authentication and authorization

  • For wp-admin/JS: cookie auth + X-WP-Nonce (action wp_rest).
  • For external clients: application passwords (basic auth) or an auth plugin.
  • Use capability checks in permission_callback (authorization), not just “logged in”.

Read references/authentication.md.

6) Client-facing behavior (discovery, pagination, embeds)

  • Ensure discovery works (Link header or <link rel="https://api.w.org/">).
  • Support _fields, _embed, _method, _envelope, pagination headers.
  • Remember per_page is capped at 100.

Read references/discovery-and-params.md.

Verification

  • /wp-json/ index includes your namespace.
  • OPTIONS on your route returns schema (when provided).
  • Endpoint returns expected data; permission failures return 401/403 as appropriate.
  • CPT/taxonomy routes appear under wp/v2 when show_in_rest is true.
  • Run repo lint/tests and any PHP/JS build steps.

Failure modes / debugging

  • 404: rest_api_init not firing, route typo, or permalinks off (use ?rest_route=).
  • 401/403: missing nonce/auth, or permission_callback too strict.
  • _doing_it_wrong for missing permission_callback: add it (use __return_true if public).
  • Invalid params: missing/incorrect args schema or validation callbacks.
  • Fields missing: show_in_rest false, meta not registered, or CPT lacks custom-fields support.

Escalation

If version support or behavior is unclear, consult the REST API Handbook and core docs before inventing patterns.

firecrawl의 다른 스킬

firecrawl-research-index
firecrawl
Firecrawl Research를 사용하여 연구 질문에 답하는 논문을 찾습니다. 의미론적 검색, 의미론적 및 구조적 확장, 본문 내 검증을 활용합니다. 단일 논문 조회나 전체 다중 논문 세트 등 논문 검색/문
data-analysisresearchweb-scraping
oracle
firecrawl
oracle CLI 사용 모범 사례 (프롬프트 + 파일 번들링, 엔진, 세션 및 파일 첨부 패턴)
pinecone
firecrawl
프로덕션 AI 애플리케이션을 위한 관리형 벡터 데이터베이스입니다. 완전 관리형, 자동 확장, 하이브리드 검색(밀집 + 희소), 메타데이터 필터링, 네임스페이스를 지원합니다.
wpds
firecrawl
WordPress 디자인 시스템(WPDS)과 그 컴포넌트, 토큰, 패턴 등을 활용하여 UI를 구축할 때 사용합니다.
audiocraft-audio-generation
firecrawl
PyTorch 라이브러리로, 텍스트-음악(MusicGen) 및 텍스트-사운드(AudioGen)를 포함한 오디오 생성을 지원합니다. 텍스트로부터 음악을 생성해야 할 때 사용합니다…
skypilot-multi-cloud-orchestration
firecrawl
다중 클라우드에서 ML 워크로드를 오케스트레이션하며 자동 비용 최적화를 제공합니다. 여러 클라우드에 걸쳐 학습 또는 배치 작업을 실행해야 하거나, 활용해야 할 때 사용하세요.
firecrawl-seo-audit
firecrawl
Firecrawl을 사용하여 웹사이트의 SEO를 감사합니다. 사용자가 SEO 감사, 메타데이터 및 헤딩 검토, 사이트맵/사이트 구조 분석, 키워드 기회, 경쟁사 SERP 비교, 또는 우선순위가 지정된 검색 최적화 추천을 요청할 때 사용하세요.
data-analysisresearchweb-scraping
gh-issues
firecrawl
GitHub 이슈를 가져오고, 수정을 구현할 하위 에이전트를 생성한 후 PR을 열고, PR 리뷰 코멘트를 모니터링하고 대응합니다. 사용법: /gh-issues [소유자/저장소] [--레이블…]