Comandi WP-CLI
Nucleo aggiunge a WP-CLI otto comandi con il prefisso wp nucleo, per il server MCP, lo stato, le ability e il sito come file.
In questa pagina
01Panoramica
Nucleo registra otto comandi WP-CLI sotto il prefisso wp nucleo. Nucleo registra i comandi solo nel contesto WP-CLI, cioè quando la costante WP_CLI è definita. I comandi si dividono in tre gruppi: server MCP, stato e ability; sito come file; documentazione generata. Ogni ability nucleo/* ha in più un comando proprio, per esempio wp nucleo doc get: vedi Comandi per ability. wp nucleo status, wp nucleo ability run e i comandi per ability eseguono le ability nucleo/* con le stesse regole di permesso di MCP e REST. wp nucleo export, import e sync non passano dalle ability nucleo/site-export e nucleo/site-import.
Utente: WP-CLI parte senza utente (ID 0). L'utente si sceglie con l'opzione globale di WP-CLI --user=<id|login>. Solo wp nucleo mcp rifiuta l'esecuzione senza utente. export, import e sync si fermano senza un utente con manage_options. Gli altri comandi non controllano l'utente. Le ability eseguite da status, ability run e dai comandi per ability però controllano la capability, quindi senza --user falliscono quasi tutte. docs non fa nessun controllo di capability.
Errori e codici di uscita: WP_CLI::error() stampa Error: <messaggio> ed esce con codice 1. WP_CLI::warning() stampa Warning: <messaggio> e non cambia il codice di uscita. Le eccezioni non catturate (cartella mancante, file non scrivibile) interrompono il comando con un errore fatale di PHP.
02Server MCP e stato
wp nucleo mcp
Cosa fa: avvia il server MCP di Nucleo sul trasporto STDIO. Legge una richiesta JSON-RPC 2.0 per riga da STDIN e scrive una risposta per riga su STDOUT. Termina alla fine dell'input (EOF).
Come si usa: wp nucleo mcp --user=<id|login>. Un client MCP locale avvia il comando come processo figlio. La pagina admin degli agenti mostra lo stesso comando come alternativa a OAuth (wp nucleo mcp --user=<login>).
Parametri: nessun argomento proprio. --user è l'opzione globale di WP-CLI ed è obbligatoria.
Permessi: richiede un utente. Senza --user il comando esce con Error: Indica l'utente con --user=<id|login>. (codice 1). Ogni tool gira con le capability dell'utente indicato. Su STDIO non c'è un token OAuth, quindi non si applicano gli ambiti: tools/list mostra tutte le ability nucleo/* registrate e nessuna chiamata fallisce per ambito. Restano i controlli di capability di ogni ability.
Edizione: Free. Le ability Pro compaiono tra i tool solo con licenza attiva, perché senza licenza non si registrano.
Limiti noti:
- Metodi supportati:
initialize,ping,tools/list,tools/call. Un altro metodo risponde con errore JSON-RPC-32601. - Batch JSON-RPC non supportato (errore
-32600). JSON non valido: errore-32700. - Le notifiche (messaggi senza
id) non ricevono risposta. Le righe vuote si ignorano. - Versione di protocollo dichiarata in
initialize:2025-06-18.capabilities.tools.listChangedvalefalse. - Il nome del tool è il nome dell'ability con
/sostituito da-(nucleo/doc-getdiventanucleo-doc-get). - Il comando nasconde gli errori del database e scarta l'output scritto da altro codice con un buffer: su STDOUT passa solo JSON-RPC.
- Le ability di scrittura hanno lo stesso limite di frequenza di MCP HTTP: 60 scritture per finestra di 60 secondi per utente e gruppo di scope (filtro
nucleo/rate_limit). Oltre il limite l'ability risponderate_limited. - Dettagli del protocollo e dei tool: vedi il capitolo Server MCP, OAuth e meccanismi comuni.
wp nucleo status
Cosa fa: esegue l'ability nucleo/status e stampa il risultato. Il risultato contiene versione di Nucleo, PHP e WordPress, driver dello store, numero di documenti, conflitti con plugin di cache e budget di performance.
Come si usa: wp nucleo status --user=admin.
Parametri: nessuno. L'ability riceve un input vuoto ([]).
Permessi: l'ability richiede manage_options. Il comando non verifica l'utente: senza --user di un amministratore l'ability restituisce un WP_Error e il comando esce con codice 1. Scope OAuth dell'ability: nucleo:admin (non applicato in CLI).
Edizione: Free.
Limiti noti:
- Output: JSON con indentazione (
JSON_PRETTY_PRINT), Unicode e barre non escapati. Nessuna opzione--format. - Se l'ability non è registrata, il comando esce con
Error: nucleo_status_missing: Ability nucleo/status is not registered. - Errore dell'ability:
Error: <codice>: <messaggio>, codice di uscita 1. - Ability equivalente:
nucleo/status.
03Ability
wp nucleo ability list
Cosa fa: elenca le ability registrate il cui nome inizia con nucleo/, una per riga, con la descrizione.
Come si usa: wp nucleo ability list.
Parametri: nessuno.
Permessi: nessun controllo. Il comando non filtra per capability dell'utente né per ambito.
Edizione: Free. Le ability Pro compaiono solo con licenza attiva.
Limiti noti:
- Formato di ogni riga:
<nome> <descrizione>(due spazi). Nessuna opzione--format. - Ordine: quello del registro delle ability di WordPress. Il comando non ordina.
wp nucleo ability run
Cosa fa: esegue un'ability nucleo/* con un input JSON e stampa il risultato.
Come si usa: wp nucleo ability run <nome> [--input=<json>] --user=<id|login>. Esempio: wp nucleo ability run doc-get --input='{"postId":12}' --user=admin.
Parametri:
| Nome | Tipo | Valori ammessi | Default | Note |
|---|---|---|---|---|
<nome> | posizionale | nome di un'ability registrata, con o senza prefisso nucleo/ | vuoto | doc-get e nucleo/doc-get sono equivalenti. |
--input | stringa JSON | oggetto JSON conforme allo schema di input dell'ability | {} | Lo schema di ogni ability è nei capitoli Abilities di lettura e Abilities di scrittura. |
Permessi: la capability richiesta dall'ability. Il comando non verifica l'utente: senza --user le ability con un controllo di capability falliscono. Lo scope OAuth non si applica, perché in CLI non c'è un token.
Edizione: Free. Le ability Pro esistono solo con licenza attiva: senza licenza il comando risponde unknown_ability.
Limiti noti:
- Ability non registrata:
Error: unknown_ability: Unknown ability: nucleo/<nome>.(codice 1). --inputche non decodifica in un array:Error: invalid_json: --input must be a JSON object.(codice 1). Il controllo èis_array(), quindi anche un array JSON ([...]) passa questo controllo e arriva alla validazione dello schema.- Input non valido per lo schema o permesso negato: l'ability restituisce un
WP_Errore il comando esce conError: <codice>: <messaggio>(codice 1). - Molte ability segnalano un errore con un oggetto
{"ok": false, "error": {...}}invece di unWP_Error. In quel caso il comando stampa il JSON ed esce con codice 0. Uno script deve leggere il campook. - Output: JSON con indentazione, come
wp nucleo status. - Le ability di scrittura hanno il limite di frequenza descritto in wp nucleo mcp. Al superamento la risposta è
{"ok": false, "error": {"code": "rate_limited", ...}}e il comando esce con codice 0: va letto il campook.
04Comandi per ability
wp nucleo <gruppo> <azione>
Cosa fa: registra un comando per ogni ability nucleo/*. Il nome dell'ability perde il prefisso, e il primo trattino diventa uno spazio: nucleo/doc-get diventa wp nucleo doc get, nucleo/css-optimize-apply diventa wp nucleo css optimize-apply. Il comando esegue l'ability e stampa il risultato come wp nucleo ability run.
Come si usa: wp nucleo doc get --input='{"postId":12}' --user=admin. Il comando generico wp nucleo ability run doc-get dà lo stesso risultato.
Parametri:
| Nome | Tipo | Valori ammessi | Default | Note |
|---|---|---|---|---|
--input | stringa JSON | oggetto JSON conforme allo schema di input dell'ability | {} | Come in wp nucleo ability run. |
Permessi: come wp nucleo ability run: la capability richiesta dall'ability. Il comando non verifica l'utente: serve --user.
Edizione: Free. Le ability Pro generano un comando solo con licenza attiva.
Limiti noti:
- I nomi occupati restano dei comandi esistenti:
status,export,import,sync,docs,mcpeability. L'abilitynucleo/statusquindi non ha un comando proprio: si usawp nucleo status. - Un'ability il cui primo gruppo è occupato non ha un comando: si esegue con
wp nucleo ability run. wp nucleo quality scansenza--allsi comporta comeability run. Con--alllegge tutti i lotti, tiene le regole di sito del primo lotto, unisce le pagine e stampa il risultato unito. Un errore su un lotto:Error: <codice>: <messaggio>.- Errori e codici di uscita: come in
wp nucleo ability run.
05Sito come file
Il formato della cartella, la risoluzione dei riferimenti simbolici e le regole di conflitto sono nel capitolo Import, export e sincronizzazione. Questa sezione descrive solo i comandi.
wp nucleo export
Cosa fa: scrive il sito in una cartella di file JSON. Contenuto: site.json (token, breakpoint, impostazioni del sito, impronte di base), pages/, posts/, layouts/, sections/, rules/assets.json, media/manifest.json e un file per menu in menus/<slug>.json.
Come si usa: wp nucleo export <dir>. Esempio: wp nucleo export ./nucleo-site.
Parametri:
| Nome | Tipo | Valori ammessi | Default | Note |
|---|---|---|---|---|
<dir> | posizionale | percorso di una cartella | nessuno | Obbligatorio nel codice, anche se il docblock lo indica come facoltativo ([<dir>]). La cartella si crea se manca. |
Permessi: manage_options. Senza un utente con questa capability il comando si ferma con Error: This command needs a user with manage_options. Pass --user=<admin>. (codice 1). Esporta i post Nucleo di tutti gli stati (post_status any).
Edizione: Free. Con il pacchetto Pro ogni documento porta anche wp.lang e wp.translations.
Limiti noti:
- Senza
<dir>:Error: Specify the site folder.(codice 1). - Esito positivo:
Success: Site exported to <dir>. - Il comando sovrascrive i file con lo stesso percorso e non cancella i file già presenti nella cartella. Un documento eliminato sul sito resta nella cartella.
- Le voci di menu non esportate (bersaglio non pubblicato o cancellato) non compaiono nell'output del comando. L'ability
nucleo/site-exportle restituisce inskipped. - Non esporta
content/néterms/. - Un file non scrivibile interrompe il comando con un errore non catturato (
Cannot write file: <percorso>). - Ability equivalente:
nucleo/site-export, che restituisce i file invece di scriverli su disco.
wp nucleo import
Cosa fa: legge i file .json di una cartella, sottocartelle comprese, e crea o aggiorna token, impostazioni, menu, sezioni, pagine, post, layout, regole degli asset e media. Trova i documenti esistenti per slug e tipo di post.
Come si usa: wp nucleo import <dir> [--dry-run] [--force].
Parametri:
| Nome | Tipo | Valori ammessi | Default | Note |
|---|---|---|---|---|
<dir> | posizionale | percorso di una cartella esistente | nessuno | Obbligatorio. |
--dry-run | flag | presente o assente | assente | Valida e conta le modifiche senza salvare. |
--force | flag | presente o assente | assente | Sovrascrive anche i documenti, i token e le impostazioni cambiati sul sito dopo l'export. Vale per tutti i file. |
Permessi: manage_options, come per wp nucleo export. Senza un utente con questa capability il comando si ferma con lo stesso errore (codice 1).
Edizione: Free. Con il pacchetto Pro l'import imposta anche la lingua dei post e collega le traduzioni.
Limiti noti:
- Senza
<dir>:Error: Specify the site folder.(codice 1). - Cartella inesistente: eccezione non catturata (
Directory does not exist: <dir>). - Output: una riga
Creati: <n>, aggiornati: <n>, invariati: <n>.e unWarning: <file>: <messaggio>per ogni errore. Con--dry-runla riga è la stessa: i numeri indicano cosa cambierebbe. - Un errore su un file non ferma gli altri. Il comando esce con codice 0 anche con errori.
- Codici d'errore interni del report:
error,conflict,duplicate,not_json,invalid_document,quality_blocking. Il comando stampa solo il messaggio, non il codice. - Il comando non stampa gli avvisi (
warnings) del report. - Il comando non passa consensi (
acknowledge): un documento con problemi di qualità bloccanti non si importa (quality_blocking). --forcenon accetta un elenco di file. L'ability accettaforcecome lista di percorsi.- Il comando non aggiorna
base,tokensBaseesiteBaseinsite.jsondopo l'import. La CLI localenucleo pushinvece li riscrive. - Le cartelle
content/eterms/si ignorano: l'import legge solosite.json,media/manifest.json,menus/,sections/,pages/,posts/,layouts/erules/assets.json. - Ability equivalente:
nucleo/site-import, che accetta in piùforceper file,acknowledgeepending.
wp nucleo sync
Cosa fa: importa la cartella come wp nucleo import senza opzioni. Con --prune sposta nel cestino i documenti Nucleo del sito che non hanno un file corrispondente nella cartella.
Come si usa: wp nucleo sync <dir> [--prune].
Parametri:
| Nome | Tipo | Valori ammessi | Default | Note |
|---|---|---|---|---|
<dir> | posizionale | percorso di una cartella esistente | nessuno | Obbligatorio. |
--prune | flag | presente o assente | assente | Cestina i post di tipo page, post, nucleo_layout e nucleo_section con meta _nucleo_doc il cui percorso (pages/<slug>.json ecc.) manca nella cartella. |
Permessi: manage_options, come per wp nucleo import.
Edizione: Free.
Limiti noti:
- Output: la riga di
wp nucleo import, gli avvisi per gli errori e, con--prune,Cestinati: <n>. - Il comando non accetta
--dry-runné--force: l'import gira sempre con salvataggio e senza forzatura. --pruneagisce anche se l'import ha avuto errori. Il confronto usa lo slug: un post rinominato sul sito risulta assente dalla cartella.--prunesposta nel cestino, non elimina in modo definitivo. Non tocca menu, token, media né regole.- Nessuna ability equivalente per
--prune. Per l'import vedi l'abilitynucleo/site-import.
06Documentazione generata
wp nucleo docs
Cosa fa: genera tre file in una cartella a partire dal codice: blocchi.md (ogni blocco con campi, valori ammessi, default e supporti), abilities.md (ogni ability nucleo/* con descrizione, scope OAuth, sola lettura e schema di input) e llms.txt (URL MCP, comando STDIO e regole d'uso).
Come si usa: wp nucleo docs [<dir>]. Esempio: wp nucleo docs ./nucleo-docs.
Parametri:
| Nome | Tipo | Valori ammessi | Default | Note |
|---|---|---|---|---|
<dir> | posizionale | percorso di una cartella | ./nucleo-docs | Relativo alla cartella di lavoro di WP-CLI. La cartella si crea se manca. |
Permessi: nessun controllo di capability.
Edizione: Free. abilities.md elenca le ability Pro solo con licenza attiva.
Limiti noti:
- Esito positivo:
Success: Documentazione scritta in <dir>. - Cartella non creabile o file non scrivibile: eccezione non catturata (
Directory cannot be created: <dir>,Write failed: <file>). - I testi generati sono in inglese.
- Un'ability senza scope mappato compare con scope
none. llms.txtcontiene l'URLhome_url('/wp-json/nucleo/v1/mcp')del sito su cui gira il comando.- I file sovrascrivono quelli esistenti con lo stesso nome.
- Nessuna ability equivalente. Gli argomenti di
nucleo/catalog-getnon fanno parte di questo comando.
Questa pagina ti è stata utile?