Călătoria mea către crearea unui plugin WordPress cu ChatGPT: 120 de ore de muncă, fără experiență anterioară
Publicat: 2024-08-28Voi fi sincer: de fapt m-am gândit că aș putea construi un plugin WordPress cu ChatGPT în doar câteva ore. Sau, cel puțin, asta m-au făcut să cred toate tutorialele YouTube și firele de pe Twitter.
Dar permiteți-mi să vă spun că acele povești au omis câteva detalii cruciale – pentru a fi exact, aproximativ 120 de ore de detalii. Da, atât mi-a luat de fapt să construiesc pluginul de la început până la sfârșit: 120 de ore!
Pentru context, nu am avut nicio experiență anterioară cu dezvoltarea de pluginuri sau WordPress, dar am decis să mă scufund oricum. Și deși mi-a plăcut provocarea, a fost mult mai grea decât mă așteptam. La fiecare pas, am lovit un obstacol după altul, dintre care multe nici nu știam că există. A fost frustrant, dar și o experiență uriașă – uriașă(!) – de învățare.
Presupunând că intenționați să-mi mergeți pe urme, vă îndemn cu tărie să citiți acest articol în întregime în prealabil. Nu spun asta ca un fel de auto-promovare. O spun pentru că vă va economisi cu adevărat ore – chiar și zile – de muncă suplimentară. Sunt atât de multe lucruri pe care le-am dat peste cap în acest proces, încât nu am avut nicio idee care au fost importante până după fapte. Din păcate, acest lucru a dus la nenumărate revizuiri ale codului (plin de multă frustrare) care ar fi putut fi prevenite. Citind acest lucru, nu veți avea această problemă.
Pentru cine este și nu este acesta 🙋♂️
În funcție de antecedentele și setul de abilități, s-ar putea să vă întrebați dacă sunteți „suficient de calificat” pentru a face acest lucru. O sa spun atat:
Deși nu trebuie să aveți cunoștințe prealabile de codificare, trebuie să fiți entuziasmat de învățarea unor coduri și de procesul general de dezvoltare a unui plugin. Există o mulțime de faze de parcurs și, de multe ori, o fază nu are nimic de-a face cu cealaltă în ceea ce privește abilitățile (sau chiar instrumentele) de care aveți nevoie pentru a o finaliza. Pe scurt, fiți gata să învățați – MULT .
În funcție de natura pluginului și de obiectivele tale finale, îți poate dura cu ușurință o lună sau mai mult pentru a veni cu un produs final.
A avea un ochi puternic pentru detalii și recunoașterea modelelor va ajuta destul de mult, la fel ca și a ști ce fac PHP, JavaScript și CSS. Nu trebuie să știți cum să codificați cu ele, dar înțelegerea scopului lor și a modului în care sunt utilizate va fi un avantaj.
Dacă niciuna dintre cele de mai sus nu te descrie – în special dorința de a învăța – și cauți o soluție rapidă și ușoară, atunci aceasta nu este pentru tine. Nu este nici rapid, nici ușor. Dar, este posibil dacă depui efort.
Dacă ești de acord cu asta, atunci hai să începem.
Prima etapă: mapați-vă pluginul în detaliu 📝
Prima întrebare la care trebuie să ți-o pui – și să răspunzi – este ce tip de plugin vreau să construiesc și ce vreau să facă?
S-ar putea să fiți tentat să vă grăbiți prin asta, astfel încât să puteți începe efectiv să construiți și să codificați, dar vă îndemn să vă faceți timp cu asta. Ceea ce faceți aici va pune bazele solicitărilor dvs. și vă va permite să construiți într-o manieră organizată, mai degrabă decât să adăugați lucruri din mers. Pentru a trece eficient de această fază, luați în considerare următoarele:
- Ce funcții vrei să aibă pluginul tău?
- Cum vrei să arate partea wp-admin?
- Creați wireframes sau diagrame de flux pentru a vizualiza fluxul de lucru al pluginului.
- Harta-l si descrie-l pana in cele mai mici detalii.
- Decideți dacă îl doriți pentru uz privat sau dacă doriți să îl faceți disponibil în depozitul WordPress pentru acces public.
Funcții
Administratorul wp
Wireframes sau diagrame de flux
Combină totul și descrie-l în detaliu
Utilizare privată versus acces public prin intermediul depozitului WordPress
Faza a doua: oferiți ChatGPT o solicitare detaliată pentru a începe dezvoltarea 🗣️
Ideea principală aici este să oferiți GPT o privire de ansamblu asupra pluginului dvs. cu instrucțiuni clare. Ca o sugestie generală, v-aș sfătui să evitați să încercați să construiți întreaga casă deodată. Este mai bine să luați o abordare cărămidă cu cărămidă.
Să presupunem că trebuie să-mi construiești pluginul ca exemplu.
Chiar dacă are opt efecte, aș recomanda să-i spuneți GPT că doriți să începeți cu un singur efect. Aproape ca și cum ați construi un plugin cu un singur efect în loc de un plugin cu opt efecte . Apoi verificați pentru a vă asigura că efectul funcționează - inclusiv zona de setări back-end. Remediați eventualele erori și, odată ce totul arată bine, adăugați următorul efect. Apoi urmați acest proces, unul câte unul.
Motivul pentru care procedați în acest fel este că facilitează remedierea oricăror erori care ar putea fi introduse în codul dvs. pe măsură ce codul crește în complexitate. Dacă GPT generează tot codul dvs. simultan și multe lucruri nu funcționează, va fi mult mai greu de remediat.
Încă doriți să oferiți GPT o privire de ansamblu asupra viziunii dvs. generale pentru plugin, dar încheiați solicitarea concentrându-vă mai întâi pe un anumit lucru.
Pentru a vă economisi timp, am creat un exemplu de șablon pe care îl puteți oferi ChatGPT pentru a începe.
Secțiunile dintre paranteze [X] necesită intrarea dvs. pentru a fi finalizate. Este posibil să fie necesar sau nu să-l editați în continuare, în funcție de tipul de plugin pe care intenționați să îl construiți.
Dacă nu înțelegeți totul în prompter, nu vă faceți griji, nici eu nu am înțeles. Veți învăța pe măsură ce parcurgeți procesul.
Indemnul meu 🤖
I want to build a WordPress plugin called [name] that does the following: [General overview but don't give GPT the specifics yet] I'd like it to work via [Refer back to the section "combine everything and describe it in detail" from phase one; think about how you want your plugin to function - if you're not sure, then you can delete this part] . I would also like to create a settings menu in wp-admin so that users can [Explain what you want your settings menu to look like and do, including any specific UI/UX considerations; if you create any wireframes, upload those as well] I plan on using the following tools for this process: - Docker and/or Local by Flywheel {Choose one or use both} - Terminal (MAC) {if you're using a PC, substitute with Command Prompt} - Sublime Text - Chrome and Chrome inspector tool Also, I want to use GitHub for version control to track changes and collaborate effectively. I will use the default WordPress template provided by GitHub to generate the code for the .gitignore file. However, I will need your help to walk me through how to set up a repository and how to commit my files to it. For the main PHP file, the author name should be [your name] and the author URI should be [your website if you have one] . For any code you generate, please use tabs for indentation and not spaces. {important if you plan on submitting your plugin to the WordPress repository} If you need to enqueue any scripts, please ask me questions to help me figure out whether we should use conditional loading or if we should enqueue globally. In addition, when generating CSS, please follow BEM (Block Element Modifier) methodology. Let's begin with [insert which feature you'd like to build first] Please [Optional: help me setup Local by Flywheel and then] generate the initial PHP file and advise on next steps after that.
După ce oferiți mesajului ChatGPT, acesta vă va ghida prin restul pașilor, pe care i-am subliniat mai jos. Merită remarcat faptul că, în funcție de starea de spirit a ChatGPT sau de propria ta dorință de a urma procesul așa cum l-am prezentat, este posibil ca modul în care înscriu totul să nu fie la fel de liniar precum este prezentat.
Pentru a vă face o idee despre ceea ce vreau să spun, am testat eu însumi promptul de trei ori diferite. Pe lângă faptul că m-a ajutat să configurez Local by Flywheel și să generez fișierul PHP inițial, a ales să parcurgă ceilalți pași într-un mod diferit de fiecare dată.
Prima încercare

În prima mea încercare, ChatGPT nu a depășit generarea fișierului PHP și mi-a prezentat două opțiuni despre cum aș dori să procedez în continuare. În special, a urmat instrucțiunile despre punerea în coadă a scripturilor cu încărcare condiționată și a menționat și acest lucru.
A doua încercare
A doua încercare a avut ca rezultat cel mai simplu fișier PHP, dar cel mai complet răspuns general în ceea ce privește lucrul prin pași. A trecut direct în utilizarea Terminalului pentru a configura directoare de proiecte și a inițializa Sublime. Chiar m-a îndrumat cu privire la modul de configurare a depozitului Git.

A treia încercare
A treia încercare a fost oarecum asemănătoare cu prima încercare. Deși, spre deosebire de prima încercare, ChatGPT nu a configurat încărcarea condiționată pentru scripturi și nici nu m-a întrebat despre asta. Tocmai le-a generat implicit ca globale.

La pachet
Motivul pentru care v-am împărtășit pe scurt aceste trei încercări a fost nu numai să întăresc ceea ce am spus mai devreme despre modul în care fluxul de lucru nu va fi neapărat standardizat, ci și să subliniez că promptul este la fel de mult pentru dvs., precum este pentru GPT .
Ceea ce vreau să spun este că depinde de tine să fii atent la ceea ce face ChatGPT – și la ce nu face – și să îl pui înapoi pe drumul cel bun dacă cade. Deci, pe măsură ce treceți prin această călătorie, nu uitați să vă referiți la prompt și, de asemenea, la indicatorii pe care le voi împărtăși puțin mai târziu în secțiunea de depanare. Amintiți-vă și reorientați ChatGPT pentru a face ceea ce doriți să facă, atât cât trebuie.
Descărcați pluginul meu și testați-l 📥
Dacă doriți să luați „versiunea de lucru” a pluginului meu pentru o rotire, fișierul zip este mai jos. Voi actualiza acest lucru în viitorul apropiat pentru a include versiunea de depozit WP, dar acest lucru vă va permite să o utilizați pentru moment.
Etapa a treia: instrumente, scripturi, directoare și Git 👩💻
În această fază veți stabili bazele pentru construirea pluginului dvs. Este, de asemenea, locul în care curba de învățare va crește rapid, mai ales odată ce vă apucați de instalarea scripturilor și de a utiliza Terminalul (sau promptul de comandă dacă sunteți pe un computer). Iată defalcarea:
- Decideți ce instrument de mediu local doriți să utilizați (de exemplu, Local by Flywheel, Docker).
- Configurați directoarele de proiect.
- Instalați-vă scripturile (de exemplu, npm, Composer).
- Configurați un depozit Git („repo”) și trimiteți (încărcați) fișierele plugin în el
Construiește mediul local
Configurați directoarele de proiecte
Instalați scripturi
Creați un depozit Git („repo”) și trimiteți fișierele
Etapa a patra: timp de redare cu plugin 🖱️
Dintre toate fazele, aș spune că aceasta și următoarea sunt probabil cele mai distractive, deoarece este momentul în care începi să vezi cu adevărat că totul se îmbină. Pentru a începe, veți dori să vă conectați la instalarea dvs. locală WordPress. Dacă ajungeți să utilizați Local by Flywheel, este foarte simplu, trebuie doar să faceți clic pe butonul WP Admin din dreapta sus:

Dacă ajungeți să utilizați Docker sau un alt instrument de dezvoltare locală și nu sunteți sigur cum să intrați pe site-ul dvs., trebuie doar să întrebați ChatGPT.
După ce v-ați autentificat, activați pluginul accesând Plugins → Plugins instalate . Apoi găsiți pluginul dvs. în listă și faceți clic pe Activare :

⚠️ Important : Dacă nu vedeți pluginul dvs. aici, nu intrați în panică. Cel mai probabil este o nepotrivire a directorului, dar indiferent, puteți atinge ChatGPT pentru a vă ajuta să vă dați seama. Dacă te simți încă blocat după încercări repetate și ChatGPT nu ți-a sugerat să încerci modul de depanare WordPress, atunci cere-i să-ți dea fragmentele de cod pentru acesta. Vor arăta cam așa:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
După ce vă activați pluginul, începeți să îl utilizați și notați:
- Funcționează totul așa cum trebuie? Foarte improbabil .
- Ce nu merge? În ce fel nu funcționează?
- Care sunt unele lucruri minore pe care le-ai trecut cu vederea complet în descrierea promptă inițială care nu funcționează corect?
Odată ce ți-ai făcut notele, ești gata să treci la următoarea fază: depanare și scame.

Etapa cinci: depanare și scame 💻
Complexitatea pluginului și erorile au o relație de corelație: cu cât pluginul dvs. devine mai complex, cu atât este mai mare potențialul de erori . Dar chiar și pluginurile mai simple vor necesita listing și depanare.
scame
Dacă acest articol este pentru prima dată când vezi cuvântul „linting” și nu ești sigur ce înseamnă, foarte simplu, verifică codul pluginului tău cu un set de reguli și standarde pentru acel tip de cod. Apoi vă spune dacă a găsit erori sau inconsecvențe, pe ce linii se află și cum să le rezolvați.

Litting este destul de simplu. Doar asigurați-vă că utilizați instrumentele de listing adecvate pentru tipurile de cod/fișiere la care veți lucra:
- PHP_CodeSniffer cu WordPress-Coding-Standards pentru PHP linting.
- ESLint pentru listing JavaScript.
- StyleLint pentru listing CSS.
Pentru JavaScript, poate doriți să adăugați și:
- ESLint Unicorn: Peste 100 de reguli ESLint puternice.
- ESLint Promise: util pentru gestionarea sarcinilor asincrone, cum ar fi apelurile API, interogările bazei de date, gestionarea fișierelor sau orice operațiune care necesită timp.
Depanare
Spre deosebire de linting, depanarea seamănă mult cu ceea ce ați făcut în faza anterioară, și anume că utilizați singur pluginul, identificați problemele care trebuie remediate și apoi fie le remediați singur, fie cereți ajutor ChatGPT.
Eu personal mi s-a părut mai complicată depanarea decât scame. Un motiv important este că atunci când scame, rezultatul procesului de scame îți spune exact care sunt problemele și unde se află în codul tău. Cu depanarea, nu obțineți acest lux. Depinde de tine și ChatGPT să-ți dai seama.
Cu toate acestea, ChatGPT îi este greu să rămână concentrat asupra liniilor problematice de cod, ceea ce înseamnă că trebuie să ai grijă de „gata, setat” înainte de a-l lăsa să „declanșeze”.
Pentru a vă ușura lucrurile, am pregătit o listă cu toate sfaturile pe care mi le-aș fi dat înainte de a începe faza de depanare.
În cele din urmă, dacă vă întrebați dacă ar trebui să depanați sau să lăsați scame mai întâi, după înțelegerea mea, nu există un răspuns clar. Am depanat înainte de a linia, dar poți fie să folosești preferințele lui ChatGPT pe măsură ce parcurgi procesul, fie să-i spui pe care vrei să o faci mai întâi.
Faza șase (opțional): testare 🔬
Dacă construiți un plugin relativ simplu și aveți încredere în funcționalitatea acestuia pe baza propriei teste manuale, atunci nu trebuie neapărat să faceți acest pas. Spun că, deoarece încă necesită multă muncă pentru a codifica aceste teste și, în același mod în care nu veți obține un plugin funcțional cu ChatGPT, este puțin probabil să obțineți un test funcțional fără erori prezente.
Pur și simplu vorbind, aici există un compromis între investiția de timp și valoarea practică .
Din propria mea experiență, am reușit să construiesc cu succes un test care a verificat dacă pluginurile mele își pot îndeplini sau nu funcțiile principale atunci când un utilizator interacționează cu ele – dar mi-a luat o zi întreagă de depanare!

Din punct de vedere practic, verificasem deja manual funcționalitățile pluginului meu, dar a fost plăcut să văd că testul a confirmat că totul funcționează.
Dacă veți încerca să construiți un plugin mai complex decât am făcut-o mine sau dacă funcțiile pluginului dvs. se vor concentra pe back-end (unde nu puteți verifica manual dacă funcționează sau nu), atunci luați-vă timp pentru testele executate corect merită munca manuală.
Tipuri de teste
Instrumente de luat în considerare
Etapa a șaptea (opțional): trimiteți pluginul dvs. în depozitul WordPress 🥳
Dacă ai ajuns până în acest punct, atunci ai urcat cu succes proverbialul munte al pluginului. Singurul lucru care rămâne de făcut este să vă plantați steagul astfel încât să se alăture celorlalte 59.650 de plugin-uri din depozitul WordPress.
Acesta are propriul proces separat, care este însoțit de o listă de verificare pe pagina Adăugați pluginul:
- Citiți întrebările frecvente.
- Respectați toate instrucțiunile pentru dezvoltatori de pluginuri.
- Asigurați-vă că aveți permisiunea de a vă încărca pluginul pe WordPress.org pentru ca alții să-l folosească și să îl partajeze.
- Pluginul dvs., inclusiv toate bibliotecile sale și orice alte active incluse sunt licențiate ca GPL sau sunt compatibile cu GPL.
- Faceți o rundă finală de teste cu pluginul Plugin Check și rezolvați toate problemele indicate (excluzând ceea ce considerați că sunt fals pozitive).

Versiunea curentă: 1.1.0
Ultima actualizare: 28 august 2024
plugin-check.1.1.0.zip
S-ar putea să credeți că, după toate depanarea, scame și testarea pe care le-ați făcut, pluginul pe care ți-au cerut să-l folosești nu va prelua nimic. Cu toate acestea, în calitate de dezvoltator de pluginuri pentru prima dată, probabil că veți avea câteva probleme restante de rezolvat - mai ales dacă nu eliminați fișierele de testare din versiunea dvs. înainte de a rula verificarea.
Pentru a continua, accesați Instrumente → Verificare plugin :

Apoi bifați toate cele cinci categorii și executați verificarea:

Puteți apoi să transmiteți acele probleme restante către ChatGPT și să le rezolvați. Când ați terminat, executați din nou verificarea pentru a asigura un rezultat curat. Fă-o de câte ori este nevoie. Odată ce obțineți o verificare complet curată (excluzând falsele pozitive), puteți trimite pluginul echipei de dezvoltare WordPress. Apoi așteptați cu răbdare să-l revizuiască.
Gânduri finale 🧠
Deși este un proces distractiv și plin de satisfacții să construiești un plugin cu ChatGPT, nu este în niciun caz un proces rapid. Trebuie să depui multă echitate pentru a face un produs final care funcționează decent. În cele din urmă, totuși, vei aprecia toate abilitățile noi pe care le vei învăța prin realizarea acestui proiect.
Iată câteva lucruri pe care le-am învățat (și poate și tu):
- Am învățat cum să-mi navighez pe hard disk folosind comenzile Terminal și am învățat, de asemenea, alte comenzi legate de procesul de construire a unui plugin.
- Acum mă simt destul de confortabil atât cu Docker, cât și cu Local by Flywheel, ambele pe care nu le-am folosit niciodată înainte de acest experiment.
- Sunt, de asemenea, familiarizat cu o mulțime de instrumente pentru dezvoltatori și scripturi despre care nici măcar nu știam că există înainte de aceasta.
- Am urmat câteva cursuri în trecut cu Free Code Camp și Codecademy și, deși ambele au fost grozave, simt că am obținut mult mai multe cunoștințe practice prin finalizarea acestui proiect.
- Legat de cele de mai sus, acum am o mulțime de informații de codare aleatoare care vor fi utile dacă lucrez din nou la ceva similar.
- Diferența dintre zero și pluginul de lucru este mult mai mic decât decalajul dintre pluginul de lucru și pluginul gata de trimitere. Am terminat o versiune funcțională a pluginului meu în câteva zile, dar mi-au trebuit încă câteva săptămâni până am rezolvat toate ajustările pentru a-l face suficient de bun pentru a fi trimis în depozitul WordPress.
În general, aceasta a fost una dintre cele mai tari activități pe care le-am făcut de mult timp. Vă mulțumim pentru timpul acordat citirii. Dacă ajungeți să utilizați oricare dintre aceste informații pentru a vă crea primul plugin, vă rugăm să-mi trimiteți un comentariu mai jos. Mi-ar plăcea să văd rezultatul final.