WP-CLI commands
RowSprout Pro
RowSprout Pro 3.1 adds 9 wp rowsprout commands. They call the same code as the MCP abilities, and they check permissions the same way, so every command needs --user=<id>: a WordPress user who may edit the template. WP-CLI runs without a logged-in user otherwise.
There are deliberately no commands that change properties or groups, or that repair data. Use the template editor, or the MCP abilities, for those.
Run wp help rowsprout <command> on your site for the same text as below.
wp rowsprout generate
Section titled “wp rowsprout generate”Queues a template’s pages for (re)generation, or just marks them stale without generating — the same two save actions as the admin’s own “Save action” dropdown (Create & update pages / Save template only).
wp rowsprout generate <template-id> [--group-ids=<ids>] [--force] [--save-only] [--user=<id>]| Option | Description |
|---|---|
<template-id> |
The rowsprout_template post ID. |
[--group-ids=<ids>] |
Comma-separated group IDs to limit this to, instead of the whole template. |
[--force] |
Regenerate every targeted group, ignoring change detection (same as the admin’s “Regenerate all pages” checkbox). Has no effect together with –save-only. |
[--save-only] |
Mark groups stale without queueing pages for (re)generation (same as the “Save template only” save action). |
[--user=<id>] |
Run as this WordPress user — required for the underlying capability check to pass. |
Examples
wp rowsprout generate 27147 --user=1wp rowsprout generate 27147 --force --user=1wp rowsprout generate 27147 --group-ids=389451940,220144880 --user=1wp rowsprout queue-status
Section titled “wp rowsprout queue-status”Shows generation/queue status: a site-wide summary by default, or a per-group breakdown when a template ID is given.
wp rowsprout queue-status [<template-id>] [--status=<status>] [--format=<format>] [--user=<id>]| Option | Description |
|---|---|
[<template-id>] |
Limit to this rowsprout_template post ID — shows every group’s own status instead of a site-wide summary. |
[--status=<status>] |
Only count/show groups with this status (completed, pending, stale, failed, scheduled, in-process, waiting). |
[--format=<format>] |
Output format: table (default), csv, json, yaml, or count. |
[--user=<id>] |
Run as this WordPress user — only required when <template-id> is given (the site-wide summary reads the queue table directly and isn’t capability-gated). |
Examples
wp rowsprout queue-statuswp rowsprout queue-status --status=failedwp rowsprout queue-status 27147 --user=1wp rowsprout process-queue
Section titled “wp rowsprout process-queue”Immediately processes whatever is currently due in the generation queue, instead of waiting for the next background tick (normally within a minute, via Action Scheduler). Runs QueueProcessor::processQueue() (the exact same entry point the scheduled tick itself calls — same processing-window and license-limit rules apply) and then, when Action Scheduler dispatched work asynchronously rather than running it inline, immediately runs its own bundled wp action-scheduler run command scoped to just this plugin’s own processing hook, so this command doesn’t return before the work it just queued is done.
wp rowsprout process-queueExamples
wp rowsprout process-queuewp rowsprout list-templates
Section titled “wp rowsprout list-templates”Lists rowsprout_template posts.
wp rowsprout list-templates [--status=<status>] [--search=<term>] [--page=<page>] [--per-page=<count>] [--format=<format>]| Option | Description |
|---|---|
[--status=<status>] |
Post status filter. Default: any. |
[--search=<term>] |
Only templates whose title/content matches this search term. |
[--page=<page>] |
|
[--per-page=<count>] |
Pagination, default page 1 / 20 per page (max 100). |
[--format=<format>] |
Output format: table (default), csv, json, yaml, or count. |
Examples
wp rowsprout list-templateswp rowsprout list-templates --search=Keuken --format=jsonwp rowsprout get-template
Section titled “wp rowsprout get-template”Shows a single template’s details.
wp rowsprout get-template <template-id> [--format=<format>] [--user=<id>]| Option | Description |
|---|---|
<template-id> |
The rowsprout_template post ID. |
[--format=<format>] |
table (default, a one-row summary) or json/yaml for the full detail, including every property and group. |
[--user=<id>] |
Run as this WordPress user — required for the underlying capability check to pass. |
Examples
wp rowsprout get-template 27147 --user=1wp rowsprout get-template 27147 --format=json --user=1wp rowsprout list-properties
Section titled “wp rowsprout list-properties”Lists a template’s properties (field definitions) — including any the template hasn’t explicitly saved itself yet but inherits from its parent template (see PayloadConfigBuilder::mergeInheritedFieldTypes()).
wp rowsprout list-properties <template-id> [--format=<format>] [--user=<id>]| Option | Description |
|---|---|
<template-id> |
The rowsprout_template post ID. |
[--format=<format>] |
Output format: table (default), csv, json, yaml, or count. |
[--user=<id>] |
Run as this WordPress user — required for the underlying capability check to pass. |
Examples
wp rowsprout list-properties 27147 --user=1wp rowsprout list-planning
Section titled “wp rowsprout list-planning”Shows the planning of a template’s groups: for every group its state (not generated yet / planned / waiting for its parent / queued / processing / live / outdated / failed), the moment it is planned to be generated (which is when its page goes live), and when it was last generated. Read-only; works on any language’s template. Times are in the site’s timezone.
wp rowsprout list-planning <template-id> [--state=<state>] [--format=<format>] [--user=<id>]| Option | Description |
|---|---|
<template-id> |
The rowsprout_template post ID. |
[--state=<state>] |
Only groups in this state: unplanned, planned, waiting_parent, queued, processing, live, stale, failed, deleted. |
[--format=<format>] |
Output format: table (default), csv, json, yaml, or count. |
[--user=<id>] |
Run as this WordPress user — required for the underlying capability check to pass. |
Examples
wp rowsprout list-planning 27147 --user=1wp rowsprout list-planning 27147 --state=planned --user=1wp rowsprout set-planning
Section titled “wp rowsprout set-planning”Plans — or clears — when groups are generated. Either one group (–group with –at or –clear) or many at once (–plan as JSON). All-or-nothing: if any entry is invalid nothing is saved. A child group can’t be planned earlier than its parent group. This never generates anything now — the background queue does, at the planned moment. Refused on a template that is a WPML translation of another, like every write through MCP/CLI.
wp rowsprout set-planning <template-id> [--group=<group-id>] [--at=<datetime>] [--clear] [--plan=<json>] [--user=<id>]| Option | Description |
|---|---|
<template-id> |
The rowsprout_template post ID. |
[--group=<group-id>] |
The group to plan (use with –at or –clear). |
[--at=<datetime>] |
When to generate it, “YYYY-MM-DD HH:MM” in the site’s timezone. |
[--clear] |
Remove this group’s plan (use with –group). |
[--plan=<json>] |
Plan several groups at once: a JSON object of group id => “YYYY-MM-DD HH:MM” (or “” to clear). |
[--user=<id>] |
Run as this WordPress user — required for the underlying capability check to pass. |
Examples
wp rowsprout set-planning 27147 --group=389451940 --at="2026-10-01 09:00" --user=1wp rowsprout set-planning 27147 --group=389451940 --clear --user=1wp rowsprout set-planning 27147 --plan='{"389451940":"2026-10-01 09:00","220144880":""}' --user=1wp rowsprout autofill-planning
Section titled “wp rowsprout autofill-planning”Spreads planned moments over a set of groups from a few parameters — the command-line twin of the Planning tab’s auto-fill wizard. Starting at –start it hands out –per groups per day (or hour), between –from and –to, optionally only on certain weekdays. A PREVIEW unless –save is given (–save is refused on a WPML translation; the preview works everywhere). A child group is never placed earlier than its parent group.
wp rowsprout autofill-planning <template-id> --start=<datetime> [--per=<n>] [--period=<period>] [--from=<time>] [--to=<time>] [--weekdays=<list>] [--order=<order>] [--apply=<which>] [--group-ids=<ids>] [--save] [--format=<format>] [--user=<id>]| Option | Description |
|---|---|
<template-id> |
The rowsprout_template post ID. |
--start=<datetime> |
First possible moment, “YYYY-MM-DD HH:MM” in the site’s timezone. |
[--per=<n>] |
Groups per period. Default 5. |
[--period=<period>] |
day (default) or hour. |
[--from=<time>] |
Daily window start, HH:MM. Default 09:00. |
[--to=<time>] |
Daily window end, HH:MM. Default 17:00. |
[--weekdays=<list>] |
Only on these weekdays: comma-separated numbers (0 = Sunday … 6 = Saturday) or names (mon,tue,…). Default: every day. |
[--order=<order>] |
table (default), title (alphabetical) or random. |
[--apply=<which>] |
Which groups: empty (default — groups without a plan) or all. |
[--group-ids=<ids>] |
Comma-separated group IDs to plan instead (overrides –apply). |
[--save] |
Store the result. Without it this only shows the proposal. |
[--format=<format>] |
Output format for the proposal: table (default), csv, json, yaml. |
[--user=<id>] |
Run as this WordPress user — required for the underlying capability check to pass. |
Examples
wp rowsprout autofill-planning 27147 --start="2026-10-01 09:00" --per=5 --user=1wp rowsprout autofill-planning 27147 --start="2026-10-01 09:00" --per=3 --weekdays=mon,wed,fri --order=random --save --user=1