Source Code
WordPress REST API Skill (Advanced)
Purpose
Provide a production-ready CLI for WordPress REST API automation. This skill focuses on content workflows (posts/pages), taxonomy (categories/tags), user reads, and safe custom requests without external HTTP libraries.
Best fit
- You want a stable CLI for automation and bot workflows.
- You need JSON-in/JSON-out for pipelines.
- You prefer simple HTTP with no extra dependencies.
Not a fit
- You must handle OAuth flows or complex browser-based auth.
- You need advanced media uploads (multipart streaming).
Requirements
- Node.js 18+ (for native
fetch).
One-time setup
- Enable the WordPress REST API (default in modern WordPress).
- Create an Application Password for a WordPress user.
- Confirm the user has the right role (e.g., Editor/Admin).
Install
cd wordpress
npm install
Run
node scripts/wp-cli.js help
node scripts/wp-cli.js posts:list --query per_page=5
node scripts/wp-cli.js posts:create '@post.json'
You can also use npm:
npm run wp -- posts:list --query per_page=5
Credentials
Supported options (first match wins):
- Basic auth token:
WP_BASIC_TOKEN(base64 ofuser:app_password) - User + app password:
WP_USER+WP_APP_PASSWORD - JWT bearer token:
WP_JWT_TOKEN
Required env
WP_BASE_URL(e.g.,https://example.com)
Input conventions
- JSON can be inline or loaded from file with
@path. - Query params use
--query key=value(repeatable) or--query key1=value1,key2=value2.
Command map (high level)
Posts:
posts:list,posts:get,posts:create,posts:update,posts:delete
Pages:
pages:list,pages:get,pages:create,pages:update,pages:delete
Taxonomy:
categories:list,categories:createtags:list,tags:create
Users:
users:list,users:get
Advanced:
request(raw method + path)
Operational guidance
- Prefer
context=viewfor read-only list calls. - Use
status=draftwhen staging content. - Implement retries for
429and transient5xxerrors in orchestrators.
Expected output
- JSON to stdout; non-zero exit code on errors.
Security notes
- Never log or commit tokens or application passwords.
- Use a dedicated low-privilege WordPress account where possible.