Cum de a crea un plug-in de gestionare a WordPress Avatar de la zero Noțiuni de bază

Avatar Manager pentru WordPress este un plugin dulce și simplu pentru stocarea avatarelor pe plan local și mai mult. Uşor.

Îmbunătățiți site-ul dvs. WordPress, permițându-i utilizatorilor să aleagă între utilizarea Gravatar sau a unei imagini de avatar auto-găzduit chiar de pe ecranul profilului. Flux de lucru îmbunătățit, generare de imagini la cerere și permisiuni de utilizator personalizate în cadrul unei interfețe native. Salutați plugin-ul Avatar Manager.


Introducere

Un plugin WordPress este o aplicație PHP care adaugă un set specific de funcții sau servicii WordPress, care poate fi integrat perfect cu WordPress folosind punctele de acces și metodele furnizate de API-ul WordPress Plugin.

Acest articol vă va ghida în procesul de creare a propriului plugin WordPress de la zero.

Notă: Acest articol presupune că sunteți deja familiarizat cu funcționalitatea de bază a programelor WordPress și PHP.


Pasul 1. Configurarea spațiului de lucru

Pentru a începe navigarea la wp-content / plugins / sub instalarea WordPress. Pentru a configura spațiul de lucru, creați următoarea structură de directoare și fișiere goale, exemplificate în imaginea de mai jos:


Structura spațiului de lucru pentru pluginul Avatar Manager

Asigurați-vă că ați ales un nume unic pentru directorul plugin și pentru fișierul PHP principal, cum ar fi Avatar-manager și Avatar-manager.php în acest exemplu, și puneți toate fișierele plugin-ului în acel director.

Tacerea e de aur

Înainte de a începe să scriem plugin-ul nostru, deschideți-l Avatar-manager / index.php și adăugați următorul cod:

 

Puteți vedea acest fișier în multe locuri din WordPress. Este un simplu truc folosit pentru a împiedica răsfoirea directoarelor.


Pasul 2. Scrierea unui plug-in de bază WordPress

Acum, este timpul să punem niște informații în fișierul nostru PHP principal.

Informații Plugin standard

Partea de sus a fișierului PHP principal al pluginului trebuie să conțină un antet standard al informațiilor despre plugin-uri. Acest antet permite WordPress să recunoască faptul că plugin-ul există, adăugându-l în ecranul de gestionare a plugin-urilor, astfel încât să poată fi activat, încărcat și executat funcțiile; fără antetul, pluginul nu va fi activat și niciodată nu va funcționa.

Deschis Avatar-manager / Avatar-manager.php și adăugați următoarele rânduri:

 

Informațiile minime WordPress trebuie să recunoască plugin-ul nostru este Numele pluginului linia. Restul informațiilor (dacă există) vor fi folosite pentru a crea tabela de pluginuri în ecranul de gestionare a pluginurilor. Ordinea liniilor nu este importantă.

Pentru ca mecanismul de actualizare să poată citi corect versiunea pluginului nostru, este recomandat să alegeți un format pentru numărul de versiune și să vă lipiți de el între diferite versiuni.

Licența de licență ar trebui să fie un identificator comun scurt pentru licența în care se află plugin-ul și trebuie să fie o modalitate simplă de a fi explicit despre licența codului.

versionare

Pentru transparență și înțelegere în ciclul nostru de lansare și pentru efortul de a menține compatibilitatea înapoi, Managerul de Avatar va fi menținut în conformitate cu orientările Semantic Versiune cât mai mult posibil.

Releele vor fi numerotate în următorul format:

..

Și construit cu următoarele linii directoare:

  • Ruperea compatibilității înapoi brumă majore (și resetează minor și patch-uri).
  • Noile adăugări, fără a rupe compatibilitatea înapoi, lovesc minorul (și resetează patch-ul).
  • Remedierea erorilor și modificările diverse afectează plasturele.

Pentru mai multe informații despre SemVer, vizitați semver.org.

Licență

Este obișnuit să urmați antetul standard cu informații despre licențierea pluginului. Cele mai multe pluginuri utilizează aceeași licență folosită de WordPress, care este licența GPLv2 sau o licență compatibilă cu GPLv2. Pentru a indica o licență GPLv2, includeți în pluginul nostru următoarele linii:

 / * Copyright © 2013 Cătălin Dogaru Acest program este software liber; îl puteți redistribui și / sau modifica în conformitate cu termenii Licenței Publice Generale GNU publicate de Fundația pentru Software Liber; fie versiunea 2 a Licenței, fie (la alegere) orice versiune ulterioară. Acest program este distribuit în speranța că va fi util, dar FĂRĂ NICI O GARANȚIE; fără nici măcar garanția implicită de VANDABILITATE sau de FITNESS PENTRU UN SCOP SPECIC. Pentru mai multe detalii, consultați Licența publică generală GNU. Ar fi trebuit să fi primit o copie a Licenței Publice Generale GNU împreună cu acest program; dacă nu, scrieți la Free Software Foundation, Inc., 51 Franklin Street, Etajul cinci, Boston, MA 02110-1301, SUA. * /

În continuare, deschideți-vă Avatar-manager / LICENȚĂ și lipiți-o în versiunea cu text simplu a GPLv2.


Pasul 3. Programarea pluginului Avatar Manager

După finalizarea pasului anterior, ar trebui să găsiți pluginul Avatar Manager sub ecranul Pluginuri.


Pluginul Avatar Manager în ecranul Pluginuri

Acum, este timpul să facem pluginul să facă ceva. Activați-l și adăugați următoarele linii de cod în fișierul principal PHP:

 define ('AVATAR_MANAGER_VERSION', '1.0.0'); define ('AVATAR_MANAGER_PLUGIN_URL', plugin_dir_url (__FILE__)); define ('AVATAR_MANAGER_AVATAR_UPLOADS', 0); define ('AVATAR_MANAGER_DEFAULT_SIZE', 96);

defini() funcția definește o constantă numită la timpul de execuție. plugin_dir_url () funcția primește URL-ul (cu slash-ul final) pentru plugin __FIŞIER__ a intrat. Valoarea __FIŞIER__ este calea completă și numele fișierului fișierului curent și este una dintre cele opt constante magice pe care le oferă PHP.

Să mergem mai departe și să inițializăm pluginul nostru:

 / ** * Setează setările prestabilite ale plugin-ului și face managerul Avatar disponibil pentru traducere. * * @ uses load_theme_textdomain () Pentru suport pentru traducere / localizare. * @uses plugin_basename () Pentru preluarea bazei de date a pluginului. * * @since Avatar Manager 1.0.0 * / functie avatar_manager_init () // Face managerul Avatar disponibil pentru traducere. load_plugin_textdomain ('avatar-manager', fals, nume_dată (plugin_basename (__FILE__)). / languages ​​/ ');  add_action ("init", "avatar_manager_init");

ADD_ACTION () apelul cârlig o funcție pentru o acțiune specifică. init acțiunea se execută după ce WordPress a terminat încărcarea, dar înainte de trimiterea oricăror anteturi. De asemenea load_plugin_textdomain () apelul trebuie efectuat în timpul init, în caz contrar, utilizatorii nu se pot alătura. Dar mai mult despre asta mai târziu, când voi acoperi internaționalizarea pluginului nostru. dirname () funcția returnează calea directorului părinte, în timp ce plugin_basename () funcția primește numele de bază al pluginului.

Hooks, acțiuni și filtre

Cârligele sunt furnizate de WordPress pentru a permite un plugin pentru a cârlig în restul WordPress; care este, pentru a apela funcții în plugin-ul la anumite momente și, prin urmare, setați plugin-ul în mișcare. Există două tipuri de cârlige:

  • Acțiuni - Acțiunile sunt cârligele pe care le lansează nucleul WordPress la anumite puncte în timpul execuției sau când apar anumite evenimente.
  • Filtrele - Filtrele sunt cârligele pe care WordPress le lansează pentru a modifica textul de diferite tipuri înainte de al adăuga la baza de date sau de a le trimite în ecranul browserului.

Pasul 4. Adăugarea opțiunilor pluginului

Apoi, vom adăuga opțiunile pluginului. Permiterea personalizării face ca un plugin să fie mult mai flexibil pentru utilizator.

 / ** * Înregistrează câmpurile de repetare a apelurilor de dezinfectare și de setare a pluginului. * * @ uses register_setting () Pentru înregistrarea unei setări și pentru dezaburirea acesteia * apel invers. * @ add_settings_field () Pentru înregistrarea unui câmp de setări într-o pagină și secțiune de setări *. * @uses __ () Pentru recuperarea șirului tradus din traducere (). * * @since Avatar Manager 1.0.0 * / function avatar_manager_admin_init () // Inregistreaza setarea pluginului si inversarea apelului de dezinfectare. register_setting ('discuție', 'avatar_manager', 'avatar_manager_sanitize_options'); // Înregistrează câmpul Setări pentru încărcări în Avatar în ecranul Setări discuție //. add_settings_field ("avatar-manager-avatar_uploads", __ ("Avatar Uploads", "avatar-manager"), "avatar_manager_avatar_uploads_settings_field", "discuții", "avatare"); // Înregistrează câmpul Setări implicite pentru dimensiune în ecranul Setări discuție //. add_settings_field ("avatar-manager-default-size", __ ("Dimensiune implicită", "avatar-manager"), "avatar_manager_default_size_settings_field", "discuții", "avatare");  add_action ('admin_init', 'avatar_manager_admin_init');

admin_init acțiunea este declanșată înainte de orice alt cârlig atunci când un utilizator accesează zona de administrare. register_setting () funcția înregistrează o setare și apelul său de dezintoxicare. add_settings_field () funcția înregistrează un câmp de setări pentru o pagină de setări și o secțiune. Am folosit-o pentru a adăuga opțiunile pluginului nostru în ecranul Setări de discuții. __ () funcția va fi explicată mai târziu, când voi acoperi procesul de internaționalizare.

Pasul 5. Adăugarea unui apel de dezintoxicare

Înainte de a scrie apelul de dezintoxicare, trebuie să definim două funcții suplimentare, avatar_manager_get_default_options () și avatar_manager_get_options ().

 / ** * Returnează opțiunile implicite pentru plugin. * * @since Avatar Manager 1.0.0 * * @return array Plugin opțiuni implicite. * / funcția avatar_manager_get_default_options () $ options = array ('avatar_uploads' => AVATAR_MANAGER_AVATAR_UPLOADS, 'default_size' => AVATAR_MANAGER_DEFAULT_SIZE); returneaza optiunile $; 

avatar_manager_get_default_options () funcția returnează opțiunile implicite pentru plugin.

 / ** * Returnează opțiunile pluginului. * * @ uses get_option () Pentru obținerea valorilor pentru o opțiune numită. * @ uses avatar_manager_get_default_options () Pentru preluarea opțiunilor implicite din plugin *. * * @since Avatar Manager 1.0.0 * * @return array Plugin opțiuni. * / funcția avatar_manager_get_options () return get_option ('avatar_manager', avatar_manager_get_default_options ()); 

avatar_manager_get_options () funcția recuperează opțiunile pluginului curent. get_otpion () funcția returnează valoarea opțiunii specificate sau valoarea implicită dacă opțiunea nu este în baza de date.

 / ** * Sanitizează și validează opțiunile pluginului. * * @ uses avatar_manager_get_default_options () Pentru preluarea opțiunilor implicite * din plugin. * @used absint () Pentru conversia unei valori într-un întreg non-negativ. * * @since Avatar Manager 1.0.0 * * @return array Opțiuni de plugin sanitizat. * / funcția avatar_manager_sanitize_options ($ input) $ options = avatar_manager_get_default_options (); dacă isset ($ input ['avatar_uploads']) && trim ($ input ['avatar_uploads'])) $ opțiuni ['avatar_uploads'] = trim ($ input ['avatar_uploads'])? 1: 0; dacă isset ($ input ['default_size']) && is_numeric (trim ($ input ['default_size']))) $ opțiuni ['default_size'] = absint (trim ($ input ['default_size']); dacă ($ opțiuni ['default_size'] < 1 ) $options['default_size'] = 1; elseif ( $options['default_size'] > 512) Opțiuni $ ['default_size'] = 512;  returnează opțiunile $; 

avatar_manager_sanitize_options () funcția sanitizează și validează opțiunile pluginului. isset () apel determină dacă o variabilă este setată și nu NUL. tunde() funcția benzi de benzi de la începutul și sfârșitul unui șir. is_numeric () funcția află dacă o variabilă este un număr sau un șir numeric. absint () funcția convertește o valoare la un întreg non-negativ.


Pasul 6. Adăugarea câmpurilor de setare

Acum, este timpul să adăugați câmpurile de setare.

 / ** * Imprimă câmpul setărilor Avatar Uploads. * * @uses avatar_manager_get_options () Pentru preluarea opțiunilor pluginului. * @use _e () Pentru afișarea șirului tradus din traducere (). * @ checked () pentru compararea a două valori date. * * @since Avatar Manager 1.0.0 * / funcția avatar_manager_avatar_uploads_settings_field () // Preia opțiunile pluginului. $ opțiuni = avatar_manager_get_opțiuni (); ?> 

avatar_manager_avatar_uploads_settings_field () callback imprimă câmpul Setări pentru încărcarea Avatar. verificat () funcția compară două valori date și, dacă valorile sunt aceleași, adaugă verificat atribuiți căsuței curente. _e () funcția va fi descrisă mai târziu, când voi explica procesul de internaționalizare.

 / ** * Imprimă câmpul Setări implicite pentru dimensiune. * * @uses avatar_manager_get_options () Pentru preluarea opțiunilor pluginului. * @use _e () Pentru afișarea șirului tradus din traducere (). * * @since Avatar Manager 1.0.0 * / funcția avatar_manager_default_size_settings_field () // Preia opțiunile pluginului. $ opțiuni = avatar_manager_get_opțiuni (); ?>