Cum să adăugați suport WP-CLI la orice plugin WordPress

Publicat: 2018-08-14

Ajustarea unui plugin la nevoile utilizatorului este una dintre principalele agende pe care trebuie să le urmeze fiecare proprietar de plugin. Pentru un glisor de pe prima pagină, înseamnă mai mulți selecționatori de culori, fonturi și opțiuni vizuale similare. Cu toate acestea, dacă vă adresați dezvoltatorilor, administratorilor și altor utilizatori cu putere mai devreme sau mai târziu, aceștia vor dori suport CLI. Vor dori să renunțe la mouse și să lucreze numai cu tastatura. Datorită proiectului WP-CLI, adăugarea suportului CLI la pluginul tău este o simplă simplă.

Adăugând suport @wpcli la pluginul tău #WordPress, îl vei deschide pentru dezvoltatori, utilizatori cu putere și administratori.

CLICK PENTRU A TWETE

Eterna GUI vs CLI luptă

Să scoatem ceva din cale: GUI (Graphical User Interface) nu este mai bună decât CLI (Command Line Interface) și invers: CLI nu este mai bună decât GUI. Oamenii preferă unul față de celălalt. Este o chestiune de preferință sau obișnuință personală. „Sunt la fel, sunt interschimbabile?” Cu unele compromisuri, da, pot fi, dar nimănui nu-i place să aleagă culori într-o interfață de linie de comandă alb-negru. Este pur și simplu contraproductiv. Fiecare servește unui scop specializat.

„De ce avem nevoie de amândoi? WP nu este mai orientat pe GUI?” Este, WP este mai orientat pe GUI. Dar nu pentru toți utilizatorii. Unii oameni folosesc WP într-un mod care este mai potrivit pentru CLI și le permite să lucreze mult mai rapid cu acesta. Mai mult, de ce să nu le ai pe amândouă? Nu umflă nimic și nu ține în cale.

Deci, WP-CLI este un plugin, nu?

Nu, nu este un plugin. Nu trebuie să adăugați nimic la o instalare WordPress pentru ca WP-CLI să funcționeze. Ai nevoie doar de WP-CLI pe sistemul de operare. WP-CLI este scris în PHP și ambalat într-un phar. Este o modalitate de a pune o întreagă aplicație PHP într-un singur fișier, un „phar” (Arhiva PHP) pentru distribuție și instalare ușoară în diferite sisteme de operare. Procesul de instalare depinde de sistemul dvs. de operare, dar este ușor și bine documentat în manualul WP-CLI – sau dacă vă plac mai mult videoclipurile, iată una dintre instalarea WP-CLI pe Windows.

Nu voi repeta niciunul din materialele de mai sus. Este suficient de detaliat și ar trebui să te pună în aplicare cu WP-CLI în câteva minute. Când îl rulați, schimbați directorul de lucru cu instalarea WP cu care intenționați să lucrați și rulați wp option get home pentru a vă asigura că sunteți la instalarea WP corectă și că WP-CLI funcționează.

Lucrul cu WP-CLI pe Windows 10 - Ieșire pentru comenzile noastre personalizate „site-info”.

Este mai simplu decât pare

În primul rând, avem nevoie de o funcție care să ne spună dacă utilizatorul interacționează cu WP prin CLI sau nu. Este util pentru multe lucruri, cum ar fi să nu trimită niciun antet HTTP în CLI și pentru a nu include funcții CLI la apelurile „obișnuite”. De asemenea, ne oferă posibilitatea de a reutiliza funcțiile vechi scrise inițial pentru GUI, cu doar câteva modificări minore.

function is_cli_running() {
  return defined( 'WP_CLI' ) && WP_CLI;
}

Următorul pas este să găsiți un nume pentru comanda dvs. CLI. Există aproximativ 40 de comenzi încorporate. Deci, nu puteți folosi niciunul dintre aceste nume și ar trebui să rămâneți departe de orice nume de marcă, cum ar fi „google”, deoarece probabil că nu dețineți Google. În mod ideal, ar trebui să fie numele pluginului dvs. sau un nume de umbrelă pentru un set de funcții pe care le face, astfel încât să puteți pune toate comenzile sub acesta, în efortul de a nu polua spațiul de nume principal. Este de bun simț, ca în orice bucată de cod. Să folosim site-info și vom face câteva funcții care returnează diverse informații despre site.

Pentru a menține lucrurile îngrijite și ordonate, puneți tot codul asociat WP-CLI într-un fișier nou – custom-wp-cli-commands.php . Vom include acel fișier numai atunci când este necesar și când tot codul asociat CLI este disponibil. Pentru asta, vom folosi funcția pe care tocmai am construit-o. De dragul testării și învățării, puneți fișierul în folderul temei active și apoi adăugați-l în fișierul functions.php al temei.

if ( is_cli_running() ) {
  require_once 'custom-wp-cli-commands.php';
}

Apoi, puneți asta în custom-wp-cli-commands.php ;

/**
 * Just a few sample commands to learn how WP-CLI works
 */
class cli_site_info extends WP_CLI_Command {
  /**
   * Display version information.
   * ## OPTIONS
   *
   * [--wponly]
   * : Shows only WP version info, omitting the plugin one.
   */
  function version( $args, $assoc_args ) {
    if ( !empty( $assoc_args['wponly'] ) ) {
      WP_CLI::line( 'Version of WordPress is ' . get_bloginfo( 'version' ) . '.' );
    } else {
      WP_CLI::line( 'Version of this plugin is 0.1-beta, and version of WordPress ' . get_bloginfo( 'version' ) . '.' );
    }
  }
    
    
  /**
   * Display the number of plugins.
   */
  function plugins() {
    WP_CLI::line( 'There are a total of ' . sizeof( get_plugins() ) . ' plugins on this site.' );
  }
}

WP_CLI::add_command( 'site-info', 'cli_site_info' );

Dacă deschideți site-ul, pagina de pornire sau admin, într-un browser nu se va întâmpla nimic. Asta e bine. Pentru a testa noua comandă CLI, întoarceți-vă la fereastra de linie de comandă, rulați wp site-info version și veți obține pluginul și versiunea site-ului. Sau rulați wp site-info plugins și veți obține numărul total de pluginuri de pe site. Ușor, nu? Să trecem peste cod.

La fel de ușor ca extinderea unei clase PHP

Clasa noastră cli_site_info extinde clasa WP_CLI_Command ; nimic de lux acolo. Puteți suna clasa oricum doriți. Ceea ce este important este codul de pe ultima linie a fișierului – WP_CLI::add_command( 'site-info', 'cli_site_info' ) . Înregistrează comanda noastră de nivel superior și leagă clasa noastră de aceasta. Dacă doriți să schimbați comanda site-info cu altceva, acesta este locul unde puteți face acest lucru.

Fiecare metodă publică (funcție) din clasă este o subcomandă în WP-CLI. Asigurați-vă că verificați anatomia unei comenzi pentru a afla limbajul WP-CLI adecvat. Nu este nevoie să „înregistrați” metoda oriunde sau să faceți ceva suplimentar. Așa cum am făcut pentru plugins() și version() – creați o funcție standard și asta este tot. WP-CLI va ști ce să facă cu el.

Odată ce sunteți în metodă, puteți rula orice cod de care aveți nevoie. Cu toate acestea, interacțiunea cu CLI va necesita unele funcții personalizate, deoarece lucruri precum echo nu vor funcționa așa cum era de așteptat. În loc de echo există WP_CLI::line() . API-ul intern WP-CLI acoperă tot ce aveți nevoie și toate funcțiile sunt bine documentate și sunt separate în categorii de intrare, ieșire, diverse, sistem și alte categorii, ceea ce le face foarte ușor de găsit.

Pe lângă tipărirea textului, probabil că veți dori să utilizați argumente de comandă (asociative), astfel încât să puteți apela lucruri precum wp site-info version --wponly (încercați) care scoate doar informațiile despre versiunea WP. Argumentele asociative sunt stocate în al doilea argument al funcției metodei. În cazul nostru se numește $assoc_args . Singurul lucru care mai rămâne este să testăm cheia matricei pentru o anumită valoare și să ajustați codul în consecință, așa cum am făcut în function version( $args, $assoc_args ) .

Documentație și ajutor în CLI

WP-CLI are un sistem de ajutor încorporat. Este destul de la îndemână. Nu este niciodată nevoie de nicio documentație externă pentru o comandă dacă dezvoltatorul investește puțin timp pentru a descrie comanda în codul său. Documentația nu se va scrie singură (din păcate), dar dacă investiți minimul necesar în timp ce vă creați comenzile, utilizatorii vor fi veșnic recunoscători deoarece veți pune toate documentele sub același acoperiș.

Scrieți documentele din clasa dvs. ca comentarii, folosind formatul PHPDoc. Pentru a explora mai profund, consultați Manualul CLI. wp help site-info , veți obține o listă și o descriere a subcomenzilor noastre, iar dacă vă uitați în cod, veți vedea de unde provine. Foarte explicit de la sine. Pentru mai multe detalii despre subcomandă versiune, rulați versiunea wp help site-info version și veți obține și detalii despre opțiuni.

Deși nu este folosit de un număr mare de oameni, @wpcli este adesea folosit de cei care modelează viitorul #WordPress și opiniile multor utilizatori. Adăugarea CLI la plugin-ul dvs. ar putea fi o mișcare inteligentă

CLICK PENTRU A TWETE

Fă-ți utilizatorii fericiți

Sigur, dacă dezvoltați un widget meteo, adăugarea suportului WP-CLI nu sună a mișcarea corectă. Cu toate acestea, orice instrument folosit de dezvoltatorii și administratorii die-hard, cum ar fi WP Reset, va beneficia foarte mult de WP-CLI. Utilizatorii vor putea să înlănțuiască comenzi, să scrie scripturi bash și, în general, să facă mai multe lucruri mai rapid și mai ușor. Asta duce la recenzii mai bune, utilizatori mai fericiți, mai mulți utilizatori și, în final, mai mulți bani pentru tine, indiferent de modelul de monetizare pe care îl ai în vigoare.