Consumarea unui API extern în WordPress
Am un client care are un site WordPress și dorește să-l extindă pentru a adăuga noi funcționalități. Aceste funcționalități sunt incluse într-un site web pe care l-am făcut deja (un fel de motor de căutare peste o bază de date, cu anumite filtre) și care este în curs de îmbunătățire.
Ceea ce plănuiesc să fac este să creez un API JSON al site-ului meu (cu toate funcțiile de căutare în baza mea de date) și să fac site-ul WordPress să consume acest API, apoi va trebui doar să creez view-uri pentru a afișa rezultatele căutării.
Problema este că nu cunosc deloc WordPress (pentru mine este ceva unde poți adăuga articole prin panoul de administrare...) și nu știu cum putem scrie propriul nostru cod server-side în el. Am căutat pe Google și am găsit ceva numit "plugin", dar mă întreb dacă este posibil să fac asta și dacă este cea mai simplă modalitate, având în vedere că nu am nevoie ca codul să fie folosit de terțe părți. Dacă ar fi posibil să modific o instalare WordPress pentru a adăuga fișierele mele PHP, să codific ceea ce am nevoie (view-urile mele cu același CSS WordPress) ar fi mai simplu, dar nu știu dacă este posibil?

Un scurt ghid de dezvoltare WordPress care te poate ajuta sau poate te va încurca:
Principalul lucru de ținut minte: totul este doar PHP. Și, de asemenea: nu edita fișierele de bază ale WordPress, pentru că vei avea probleme când vei face update la o versiune mai nouă mai târziu. Singurul cod pe care ar trebui să îl modifici este cel al plugin-urilor și al temelor.
Dacă ai nevoie doar să adaugi ceva la o pagină existentă, poate funcționa să editezi fișierul potrivit al temei. Totuși, dacă ai nevoie să faci ceva mai avansat (și adăugarea unei "vederi" suplimentare, cum ar fi la o anumită URL, este mai avansat în WordPress), trebuie să adaugi codul într-un loc care va fi încărcat mai devreme în procesul de inițializare al WordPress.
Motivul pentru aceasta este că WordPress întotdeauna face o interogare pentru postări pentru tine, bazată pe URL. Dacă accesezi /category/banana/
, va interoga postările din categoria banana
și va încărca fișierul de șablon corect unde trebuie doar să parcurgi și să le afișezi. Totuși, dacă accesezi /custom-view/
, WordPress probabil nu va găsi nicio postare și va încărca șablonul 404 - fără să îți ofere o modalitate ușoară de a recupera!
Unii oameni rezolvă acest lucru prin crearea de "pagini stub": creează o Pagină în WordPress unde conținutul nu este important, doar șablonul este: acolo fac orice lucru fancy doresc să facă. Aceasta este o soluție improvizată, dar funcționează. Metoda corectă ar fi să definești reguli suplimentare de rescriere, care să-i spună lui WordPress că /custom-view/
este o adresă URL validă, dar că altceva ar trebui să se întâmple acolo.
Dacă vrei să faci asta, trebuie să te conectezi la sistemul de bază al WordPress. Partea importantă aici este conectează-te, nu modifica. WordPress are acțiuni și filtre. O acțiune este doar o anunțare ("Hei, scriem acum tag-ul <head>
. Vrei să adaugi și tu ceva?"). Un filtru îți permite să modifici o variabilă ("Acesta este titlul postării. Dacă vrei să îl modifici, returnează o valoare nouă"). Bineînțeles, trucul acum este să știi care acțiuni și filtre ar trebui să folosești. Acest lucru depinde de metoda pe care o alegi (pagini stub sau reguli noi de rescriere), așa că nu voi intra în detalii aici.
Definești acțiunile și filtrele pe care vrei să le folosești într-un fișier de plugin sau în fișierul functions.php al temei tale. Acestea sunt speciale pentru că sunt încărcate în timp ce WordPress se inițializează, deci înainte ca interogarea principală să fie executată și așa mai departe. Un fișier de plugin este doar un fișier PHP, plasat în directorul wp-content/plugins/
, cu un antet special astfel încât WordPress să poată citi numele său și să îl afișeze în zona de administrare unde poți activa și dezactiva plugin-ul (astfel încât poți lăsa plugin-ul în director dar să îl dezactivezi temporar).

Bazele
Trebuie să înțelegeți elementele de bază ale pluginurilor și temelor. Pe scurt: Acestea sunt completări la funcționalitatea de bază a WordPress. În mod normal, "Pluginurile" se referă mai mult la funcționalitate, iar "Temele" se referă mai mult la "aspectul vizual". De asemenea, ar putea fi util să citiți puțin despre "Plugin API".
JSON
Este recomandat să utilizați scriptul json2 integrat în nucleul WordPress pentru a oferi un API "sigur".
Exemplu JSON
Restul ar arăta cam așa:
$response = json_encode( array(
'data' => $your_output
) );
header( "Content-Type: application/json" );
echo $response;
XML Rpc
Codex conține și informații despre "XML Rpc".
HTTP API
O altă posibilitate ar putea fi cererile HTTP. Asigurați-vă că citiți referințele de la sfârșitul linkului.
Webhooks
Aceasta este o completare suplimentară, deoarece se referă mai mult la oferirea unui API consumabil. Explicația aici. Există și un plugin numit HookPress care face această treabă pentru dumneavoastră. Câteva slide-uri de la autor sunt disponibile și ele.

Presupun că știi PHP? Sau asta este și o barieră pentru tine?
În esență, plugin-urile în WordPress sunt o convenție de a împacheta codul PHP astfel încât să fie recunoscut și gestionat de nucleul WordPress. Este mai degrabă un format decât o funcționalitate.
Cât despre funcționalitatea propriu-zisă, poți rula aproape orice cod PHP, dar este o bună practică să folosești API-urile WordPress pentru compatibilitate și fiabilitate.
Gândește-te la codul tău în contextul WordPress ca la un include
(care, tehnic, va fi exact asta). De aici, nevoile și resursele tale vor determina cât de mult din acel cod va fi rescris pentru a fi specific WordPress.

Da, este posibil.
majoritatea plugin-urilor sunt create prin intermediul așa-numitelor hook-uri:
de exemplu:
add_action("hook", "function")
este destul de ușor să-ți construiești propriul plugin odată ce înțelegi cum funcționează acest cadru de lucru... aș recomanda să te familiarizezi cu el, cel mai amplu loc pentru cunoaștere (deși, nu cel mai organizat - precum php.net) este codex-ul WordPress.
