Plugin API. Plugin API Plugin API

Pluginul este o bibliotecă încărcată dinamic (DLL). După instalarea programului, toate pluginurile incluse în distribuție sunt plasate în director c:\Program Files (x86)\Common Files\Soft Gold\Inventory 14\Plugins\... Extensia *.abl este necesară pentru a încărca automat pluginul din directorul specificat când pornește aplicația. Pluginul poate fi încărcat și din orice altă locație de pe disc, specificând calea de căutare în setări.

Inițializarea API-ului plugin

(Extensii Delphi VCL)

(Interfață plugin pentru ABViewer/Inventory)

(Drepturi de autor (c) 2002-2010 SoftGold companie de software)

{************************************************************}

unitate sgPluginItem;

interfata

implementare

XMLDocRef: IXMLDocument = nil;

ClientRef: IXMLNode = nil;

P: Indicator = zero;

PluginsHostWnd: HWND = 0;

PluginsHostWndName: șir = "";

XMLAtomString: șir = "";

procedura InitializeDoc;

ÎNCEPE

// obținerea numelui unic al clasei ferestre cu parametri

PluginsHostWndName:= Format("TsgPluginsHost:%.8X:%.8X", );

// găsirea ferestrei în sine

PluginsHostWnd:= FindWindow(PChar(PluginsHostWndName), nil);

Dacă PluginsHostWnd<>0 atunci

ÎNCEPE

// obținerea șirului atom pentru a obține parametrul documentului xml

XMLAtomString:= Format("XMLOfs%.8X%.8X",

XMLDocRef:= IXMLDocument(GetProp(PluginsHostWnd, PChar(XMLAtomString)));

Dacă este atribuit(XMLDocRef), atunci

ÎNCEPE

// adăugarea unui element la listă

ClientRef:= XMLDocRef.DocumentElement.ChildNodes.ChildNodes.AddChild(sClient);

// inițializează adresa funcției Invoke

ClientRef.ChildValues["Invoke"] := IntToId(Integer(@Invoke)); // hexazecimal $XXXXXXX

Sfârşit;

Sfârşit;

Sfârşit;

initializare

CoInitialize(P);

InitializeDoc;

Configurarea și rularea versiunii demo a pluginului

Versiunea demo a pluginului este configurată automat la instalarea programului și este conectată imediat după lansarea Inventory. Pachetul include codul sursă al componentei (numele proiectului sgPlugin.dpk) și o versiune demo a pluginului (numele proiectului plug1.dpr).

Procedura de lansare a pluginului din modul depanare:

▪ Deschide C:\Users\USER_NAME\Documents\Inventory 14\Plugins\Source\Delphi\Demos\Plug1\plug1.dpr

▪ Setați opțiunile de proiect:

Cale de căutare: „..\..\Components\PlugItem”;

Directorul de ieșire, de exemplu: „c:\Program Files\Common Files\Soft Gold\Inventory 14\Plugins”;

Aplicație gazdă , la aplicația nou instalată, de exemplu: „c:\Program Files\Soft Gold\Inventory 14\Inventory 14.exe”.

▪ Lansare pentru execuție.

Pentru a utiliza componenta în timpul proiectării, trebuie să deschideți, reconstruiți și instalați C:\Users\USER_NAME\Documents\Inventory 14\Plugins\Source\Delphi\Components\PlugItem\sgPlugin.dpk. După instalarea componentei, componenta TsgPluginItem va apărea în paleta componentelor Delphi, în fila Soft Gold, care poate fi folosită în timpul designului, adică. plasați pe formular.

Pluginurile sunt o piesă cheie a ecosistemului webpack și oferă comunității o modalitate puternică de a accesa procesul de compilare a pachetului web acces deplin la compilator și, dacă este cazul, la compilația curentă .

Pentru o introducere la nivel înalt în scrierea pluginurilor, începeți cu scrierea unui plugin .

Să începem prin a trece peste utilitarul care poate fi accesat, care oferă coloana vertebrală a interfeței plugin-ului webpack.

Atingabil

Această bibliotecă mică este un utilitar de bază în pachetul web, dar poate fi folosită și în altă parte pentru a oferi o interfață de plugin similară. Multe obiecte din webpack extind clasa Tapable. Clasa expune metodele tap , tapAsync și tapPromise pe care pluginurile le pot folosi pentru a injecta pași de construcție personalizați care vor fi declanșați pe parcursul unei compilații.

Este posibil să personalizați rezultatul tipărit trecând diferite argumente la funcția reportProgress a ProgressPlugin.

Pentru a raporta progresul, un plugin trebuie să acceseze un cârlig utilizând opțiunea context: true:

Compilator. cârlige emite. tapAsync (( nume: „MyPlugin” , context: true ) , (context, compilator, callback) => ( const reportProgress = context && context. reportProgress; if (reportProgress) reportProgress (0.95, „Începe lucru” ) ; setTimeout (( ) => ( dacă (reportProgress) reportProgress (0,95, „Lucrare gata” ); callback () ; ) , 1000 ) ) ;

Funcția reportProgress poate fi apelată cu aceste argumente:

reportProgress(procent, ... args);
  • procent: Acest argument este nefolosit; în schimb, ProgressPlugin va calcula un procent pe baza cârligului curent.
  • ...args: Orice număr de șiruri de caractere, care vor fi transmise handler-ului ProgressPlugin pentru a fi raportate utilizatorului.

Rețineți că doar un subset de compilator și cârlige de compilare acceptă funcția reportProgress. Consultați ProgressPlugin pentru o listă completă.

Logare

Logging API este disponibil de la lansarea webpack-ului 4.37. Când înregistrarea este activată în configurația statisticilor și/sau când înregistrarea infrastructurii este activată, pluginurile pot înregistra mesaje care vor fi tipărite în formatul de înregistrare respectiv (statistici, infrastructură).

  • Pluginurile ar trebui să prefere să folosească compilation.getLogger(„PluginName”) pentru înregistrare. Acest tip de înregistrare este stocat în Statistici și formatat corespunzător. Poate fi filtrat și exportat de către utilizator.
  • Pluginurile pot folosi compiler.getInfrastructureLogger(„PluginName”) pentru înregistrare. Utilizarea jurnalului de infrastructură nu este stocată în Statistici și, prin urmare, nu este formatată. De obicei, este conectat direct la consolă/tabloul de bord/GUI. Poate fi filtrat de utilizator.
  • Pluginurile pot folosi o logică specială de rezervă pentru detectarea suportului de înregistrare compilation.getLogger ? compilation.getLogger("PluginName"): consolă pentru a oferi o rezervă pentru cazurile în care este utilizată o versiune mai veche a pachetului web care nu acceptă metoda getLogger pe obiectul de compilare.

Pasii urmatori

Consultați secțiunea cârlige de compilator pentru o listă detaliată a tuturor cârligelor de compilator disponibile și a parametrilor pe care îi pun la dispoziție.

Excelent pentru integrarea ERP

Acest plugin este EXCELENT, foarte util pentru sincronizarea nopCommerce cu sistemele ERP. Cu toate acestea, nu este complet și puțin depășit. Descărcați codul sursă și aplicația exemplu de pe GitHub pentru a adăuga codul lipsă.

EXPERIENTA MEA PERSONALA

L-am folosit pentru un client care conduce un magazin fizic de ani de zile și abia recent mi-a cerut să creez site-ul de comerț electronic.
El are deja un sistem ERP foarte personalizat pentru menținerea datelor de comerț, cu peste 300 de tabele, inclusiv produse și clienți.
Așa că, deși nopCommerce are un panou de administrare minunat, el a considerat că este o suprasolicitare pentru întreținerea a două sisteme și m-a întrebat cât timp va dura să construiesc un mecanism de sincronizare automată unidirecțională de la ERP-ul său la NopCommerce, actualizând deocamdată constant prețurile și cantitățile produselor.
Am spus că sincer nu știu, mi-aș lua o zi să fac niște analize, să văd ce plugin-uri sunt disponibile și să-i dau o estimare mai precisă până la sfârșitul zilei.
Din fericire, am găsit acest plugin uimitor, am descărcat codul sursă și eșantionul însoțitor. API-ul este ușor de schimbat, deoarece pur și simplu imitați structura bazei de date pentru a oferi orice funcționalitate lipsă. Eșantionul este mai dur, deoarece este foarte de bază, dar arată cum să apelați funcțiile API și cum funcționează mecanismul de autentificare a simbolurilor.
Iată ce am făcut eu personal:
1) Am copiat exemplul de aplicație web MVC pe un server de pe intranet cu IIS și am creat o înregistrare CNAME, astfel încât să poată fi accesată ca http://nopSync
2) I-a dat același „aspect și senzație” ca panoul de administrare nopCommerce, făcând „vizualizare sursă” și făcând referire la majoritatea fișierelor css
3) S-au eliminat formularul de conectare și variabilele de sesiune, acreditările codificate greu în web.config și au fost autentificate automat la încărcare
4) Am folosit un script SQL pentru a insera SKU și Producător pentru toate produsele nopCommerce. Aceste două câmpuri combinate au fost cheia mea pentru a potrivi în mod unic produsele între cele două sisteme
5) API-ul oferă o funcție „listă” pentru a selecta toate produsele, dar actualizările sunt efectuate una câte una.
Aș fi putut citi toate produsele și apoi cu o buclă să accesez sistemul ERP de fiecare dată, verificând prețul și cantitatea și actualizând nopCommerce dacă erau diferențe.
Cu toate acestea, am considerat că este mai performant să citesc toate datele nopCommerce într-un tabel PRODUSE de bază de date locală cu un indicator DoesItRequireUpdating implicit egal cu false.
Avantajul acestui lucru a fost că sistemul ERP va fi accesat o singură dată. Cu o singură interogare pe tabelul PRODUSE folosind un JOIN pe tabelele bazei de date ERP, am reușit să actualizez prețurile, cantitățile și steaguri PRODUSE și, ulterior, să apelez API-ul de actualizare o dată pentru fiecare produs cu indicatorul setat la adevărat.
6) Am permis atât sincronizarea manuală, cât și sincronizarea automată. Manual prin inserarea unui link către http://nopSync în meniul panoului de administrare și automat prin utilizarea unei sarcini programate pentru a apela în mod repetat eșantionul web.

Când clientul m-a întrebat, la sfârșitul zilei, câte zile ar fi nevoie pentru a construi sincronizarea ERP, i-am spus că datorită plug-ului SevenSpikes API este online și se sincronizează. Multumesc SevenSpikes!!

Lansat la sfârșitul lui 2015. Cu toate acestea, în general, doar dezvoltatorii avansați și-au făcut timp să afle cât de puternică este această ofertă.

Pachetul WordPress REST API reunește toate actualizările moderne, oferind un API încorporat care poate fi integrat în teme, aplicații mobile și multe altele. Cu alte cuvinte, permite dezvoltatorilor să separe interfața front-end de gestionarea datelor, permițând oricărei aplicații să interacționeze cu WordPress. Învățarea cum funcționează acest instrument poate deschide ușa către posibilități aproape nesfârșite de extindere a site-ului dvs. WordPress.

În acest articol, vă vom prezenta proiectul WordPress REST API, vă vom explica de ce este atât de bun și apoi vă vom oferi câteva idei de utilizare. Așa că să nu pierdem timpul și să începem!

Vă prezentăm API-ul REST WordPress

Proiectul WordPress REST API (REST de la Representational State Transfer) confirmă faptul că WordPress face pași pentru a deveni o platformă de aplicații cu drepturi depline. Prezența sa este convingătoare, deoarece adaugă un API REST standard la nucleul WordPress.

Proiectul a fost încărcat pentru prima dată pe GitHub pentru dezvoltatori în 2013 de către dezvoltatorii Ryan McCue și Rachel Baker. Plugin-ul independent REST API a fost încorporat în nucleul WordPress în decembrie 2015, după ce a primit un sprijin copleșitor și a atras aproape 100 de colaboratori dornici să lucreze la îmbunătățirea capacităților sale.

De când API-ul REST WordPress a devenit parte a nucleului, și-a dovedit eficacitatea. Iată doar câteva exemple reale pentru claritatea aplicării și inspirația în proiectele dvs.:

  1. Event Espresso folosește un API REST pentru a oferi dezvoltatorilor acces la infrastructura lor globală, permițându-le să dezvolte aplicații folosind serviciile lor.
  2. Simmer permite dezvoltatorilor să acceseze API-ul pentru a-și extinde funcționalitatea într-o aplicație mobilă completă sau pentru a personaliza teme.
  3. JoinIn oferă propriul widget „încorporabil” folosind un API REST, populându-l cu date relevante oriunde este afișat.

Acesta este doar vârful aisbergului când vine vorba de scopurile inovatoare ale API-urilor REST. Cu toate acestea, să discutăm cum funcționează API-ul REST în sine.

Cum funcționează API-ul REST WordPress

Pe scurt, un API REST funcționează prin manipularea datelor text dintr-o locație în alta fără a accesa direct baza de date sau interfața cu utilizatorul. Există multe tipuri de API-uri (Application Programming Interfaces), în ciuda acestui fapt, REST rămâne un standard modern și relevant.

API-ul REST este transmis prin punctele de acces HTTP (Hyper Text Transfer Protocol) folosind formatul JavaScript Object Notation (JSON). Mai simplu spus, aceste tehnologii oferă acces la API-uri folosind adrese web unice pentru a furniza date care se comportă ca obiecte JavaScript.

Dacă nu ați lucrat niciodată cu JavaScript sau cu definițiile obiectelor sale, aflați elementele de bază ale JSON. Acum că am clarificat puțin conceptul API-ului REST, să vorbim despre cum poate avea un impact mare asupra procesului de dezvoltare folosind WordPress.

Ce înseamnă API-ul REST WordPress pentru dezvoltatori?

API-ul WordPress REST este un integrator universal între orice instalare WordPress și orice aplicație de pe un server web sau sistemul dvs. de operare. În cele din urmă, asta înseamnă că singura limită a ceea ce poate fi construit cu WordPress este imaginația noastră. Puteți crea orice aplicație scrisă în orice platformă sau limbă și puteți utiliza WordPress pentru a procesa date prin API-ul REST. Comunitatea WordPress deschisă și prietenoasă oferă oportunități extraordinare.

API-ul REST se bazează pe JavaScript, care primește o atenție din ce în ce mai mare, ceea ce indică ce limbaje de programare este important de știut. Veți descoperi în curând că JavaScript de pe server este noul PHP. Acest lucru poate fi văzut deja în noul software WordPress.com, Calypso, care rulează în întregime pe JavaScript și un API REST.

Prin standardizarea modului în care aplicațiile (inclusiv nucleul WordPress) interacționează cu datele WordPress, dezvoltarea WordPress va deveni mai ușoară și mai intuitivă. Mai mult, va facilita integrarea cu platforme terțe.

Sper că acum aveți mai multe motive pentru care este important să începeți să învățați cum să utilizați această tehnologie acum. Este timpul să faceți primii pași către utilizarea API-ului REST în propria muncă!

5 pași pentru a începe cu WordPress REST API

După cum am descris mai devreme, API-ul REST poate fi utilizat cu orice aplicație sau orice limbaj de programare care poate apela resurse HTTP. Ne vom concentra pe utilizarea liniei de comandă pentru a face solicitări REST API, deoarece este cea mai simplă metodă cu cele mai mici șanse de a introduce erori care pot diminua procesul de învățare.

Pentru a face acest lucru, trebuie să deschideți un program cu o interfață de linie de comandă (Command Line Interface CLI) pe computer - Terminal pe macOS sau Linux și Linie de comanda pe Windows. CLI vă permite să interacționați direct cu API-ul REST, fără a fi nevoie să scrieți scripturi suplimentare pentru a solicita și procesa informații. Orice solicitare pe care o scrieți în CLI poate fi un script în PHP, JavaScript sau altă limbă, dar metoda va fi diferită pentru fiecare. Executarea directă a comenzilor în CLI. Doar tastați comanda dorită și apăsați Enter.

De asemenea, vă recomandăm să configurați un site demonstrativ sau să testați local, în loc să încercați acești pași pe un site live. Și, în sfârșit, încă o condiție este ca versiunea WordPress a site-ului dvs. să fie 4.4 sau mai mare. Dacă ești gata, atunci hai să începem!

Pasul 1: Cunoașteți conceptele de bază ale API-ului REST

Înainte de a începe, să ne familiarizăm cu conceptele cheie ale API-ului REST. Există doar cinci concepte și termeni de bază cu care ar trebui să vă familiarizați. Să ne uităm la ele:

  1. Rute („Rute”) și Resurse sau puncte de acces („Puncte finale”). Acesta este cel mai important aspect în înțelegerea API-ului REST. Rutele vă ajută să navigați între resurse atunci când o anumită metodă HTTP (cum ar fi un set de date statice sau o acțiune) este conectată la o anumită rută. De exemplu, /wp-json/ este o rută configurată ca o resursă creată pentru a ne arăta rutele disponibile.
  2. Cereri. Ele sunt create prin rularea resurselor potrivite și prin trecerea datelor.
  3. Răspuns ( Răspunsuri). Pe scurt, furnizarea datelor pe care le-ați solicitat sau returnarea unei erori pentru a vă anunța că ceva a mers prost.
  4. Scheme. Mai jos sunt răspunsuri șablon, astfel încât să știți întotdeauna exact unde să căutați datele de care aveți nevoie.
  5. Clasele de controler. Ele vă permit să vă creați propriile rute și resurse. Atâta timp cât nu trebuie să vă faceți griji, acestea vor deveni mai utile mai târziu.

Odată ce înțelegeți aceste cinci concepte, puteți începe să vă scufundați mai adânc în API-ul REST în sine, începând cu punctele sale de acces.

Pasul 2: Aflați cele mai utile puncte de acces REST API

API-ul WordPress REST oferă un manual de referință cu toate punctele de acces (resurse) unde le puteți găsi pe cele care vă sunt cele mai utile. În primul rând, trebuie să știți cum să construiți un apel API REST HTTP. Partea de bază a oricărui apel API WordPress arată astfel, înlocuiți domeniul tău.com la a ta:

Http://yourdomain.com/wp-json/

Puteți testa conexiunea rulând comanda curl în CLI folosind propria adresă URL:

Curl -X OPȚIUNI -i http://domeniul tău.com/wp-json/

Ar trebui să fii întâmpinat cu un mesaj de la HTTP. Puteți modifica în continuare această comandă folosind unele dintre resursele principale. Acum folosim doar versiunea GET a curl.

Pentru a obține o listă JSON a postărilor dvs. în WordPress, puteți utiliza următoarele:

După aceasta, încercați următoarele pentru a verifica toate paginile WordPress existente:

Curl -X GET -i http://yourdomain.com/wp-json/wp/v2/pages

Puteți experimenta cu fiecare dintre aceste puncte de acces (și mai multe!) în CLI pentru a vedea ce răspuns produce fiecare.

Pasul 3: Aflați elementele de bază ale autentificării API REST

Acum este momentul să învățați despre autentificare. Unele acțiuni și date din API-ul REST sunt publice, în timp ce altele necesită să fiți conectat ca administrator. Cu toate acestea, acesta este un API REST și nu există un loc unde să vă conectați pentru autorizare. În schimb, vă puteți autentifica în timpul solicitărilor care necesită acces de administrator, cum ar fi vizualizarea postărilor nepublicate sau modificarea postărilor.

Să începem prin a instala pluginul WordPress REST API Basic Auth. Acesta este un plugin simplu pentru dezvoltatori pentru a învăța rapid API-ul REST și nu este destinat site-urilor web reale. Cu toate acestea, procesul de instalare este același ca pentru orice alt plugin.

Odată ce este instalat Basic Auth, vă veți putea autentifica prin CLI cu steag utilizator. Iată un exemplu de aplicare a metodei de autentificare a utilizatorului folosind răsuci pentru a vizualiza postări nepublicate:

Curl -X GET --user username:parola -i http://yourdomain.com/wp-json/wp/v2/posts?status=draft

Autentificarea va fi necesară pentru orice operațiune, alta decât vizualizarea informațiilor publice. Odată ce vă familiarizați cu autentificarea de bază, puteți explora alte opțiuni recomandate de documentația API-ului REST pentru dezvoltarea dvs.

Pasul 4: Selectați prima postare WordPress folosind API-ul REST

După ce înțelegeți cum să efectuați apeluri API REST de bază cu curl, încercați să selectați o anumită intrare. Mai întâi, să afișăm toate publicațiile, așa cum am făcut mai devreme:

Curl -X GET -i http://yourdomain.com/wp-json/wp/v2/posts

Puteți folosi acest truc pentru apendicele ID pentru orice resursă API REST, indiferent dacă doriți să afișați o postare, o pagină sau o taxonomie.

Pasul 5: Efectuați modificări postării dvs. din WordPress prin API-ul REST

În cele din urmă, să încercăm să aducem modificări publicației pe care ați selectat-o. În loc de comenzi OPȚIUNE sau OBȚINE, de data aceasta vom folosi POST pentru a face modificări. OBȚINE este folosit pentru a citi date în timp ce POST- pentru a le trimite.

Să redenumim postarea trimițând o solicitare POSTîmpreună cu datele de autentificare. Noi modificări vor fi făcute folosind steag d la sfârşitul comenzii. Vom transmite un obiect JavaScript personalizat setând variabila titlu la valoarea sa, cum ar fi Noul meu titlu așa cum se arată în codul de mai jos:

Curl -X POST --nume utilizator utilizator:parolă http://domeniul tău.com/wp-json/wp/v2/posts/ -d "("title":"Noul meu titlu")"

Asigurați-vă că înlocuiți numele de utilizator, parola, ID-ul postării și titlul cu propriile dvs. Puteți selecta din nou publicația dată pentru a verifica modificările:

Curl -X GET -i http://yourdomain.com/wp-json/wp/v2/posts/

Felicitări! Tocmai ați făcut primele modificări de administrator folosind API-ul REST WordPress. Desigur, acest ghid de bază doar zgârie suprafața posibilităților oferite de API-ul REST, dar este un început destul de solid!

Concluzie

WordPress REST API este o nouă versiune puternică a nucleului WordPress și mulți dezvoltatori au început deja să-și folosească capacitățile. În consecință, învățând până acum cum să lucrați cu noua caracteristică, vă veți îmbunătăți abilitățile de programare și veți putea crea o aplicație folosind WordPress ca cadru.

Pentru a recapitula, am parcurs cinci pași în drumul nostru spre a învăța cum să interacționăm cu API-ul REST WordPress:

  1. Introducere în conceptele de bază REST API.
  2. Cele mai utile resurse/puncte de acces REST API.
  3. Aflați elementele de bază ale autentificării API REST.
  4. Preluarea unei postări pe WordPress utilizând API-ul REST.
  5. Modificați o postare WordPress folosind API-ul REST.

Ce întrebări aveți despre API-ul REST WordPress? Scrie-ne în comentarii!