Afișarea informațiilor despre un plugin WordPress.org pe site-ul dvs.

În prima parte a acestui articol, am discutat cum să folosim funcțiile încorporate pentru a comunica cu WordPress.org și pentru a prelua detaliile pluginului.

În acest tutorial vom pune teoria în acțiune pentru a crea un plugin simplu care ne va permite să afișăm detalii despre orice plugin găzduit pe WordPress.org pe site-ul nostru WordPress folosind coduri scurte.


Noțiuni de bază

Presupun că sunteți un dezvoltator de plugin-uri și cunoașteți elementele de bază, dar dacă aveți îndoieli, vă recomand să citiți următoarele două articole:

  • Două moduri de a dezvolta pluginuri WordPress: Programare funcțională
  • Două moduri de a dezvolta pluginuri WordPress: programare orientată pe obiecte

Ce facem noi?

Cu acest plugin vrem să creăm un scurtcod, cum ar fi [mpi slug = "meu-plugin-informații" domeniu = "versiune"] care poate accepta două atribute: "slug" și "câmp", pe baza căruia apoi extragem și afișăm informații despre orice plugin găzduit în repozitoriul WordPress.org.

Crearea bazei de pluginuri

Să începem prin crearea unui dosar numit mi-plugin-informații în tine wp-content / plugins director. În interiorul acestuia, creați un fișier numit mi-plugin-info.php și lipiți codul de mai jos:

 

Ce am facut?

În codul de mai sus, am creat și inițializat clasa noastră de pluginuri DOT_MyPluginInfo. În interiorul acestuia sunt blocurile generale ale unui plugin, de exemplu __construi() metodă.

Functia init_my_plugin_info este conectat la init acțiune astfel încât să ruleze după ce WordPress este încărcat, dar înainte de trimiterea oricăror anteturi. În interiorul funcției init_my_plugin_info am înregistrat codul nostru scurt folosind add_shortcode funcţie.

Notă: Pentru a citi mai multe despre add_shortcode, verificați Codex-ul.

Pluginul de mai sus are acum un cod suficient pentru a fi recunoscut de WordPress din tabloul de bord al pluginului. Dacă ați creat deja un fișier conform instrucțiunilor, puteți vizita acum Plugin-uri pagina și să activați acest plugin.


Configurarea codului scurt

Deoarece dorim flexibilitatea de a alege ce informații dorim să afișăm despre un plugin, am creat un shortcode cu două atribute. Primul numit "slug" va fi folosit pentru a specifica datele plugin-ului care trebuie recuperate. Al doilea atribut "câmp" va fi folosit pentru a specifica care este piesa exactă de informații despre un plugin pe care trebuie să-l afișăm.

De exemplu, dacă vrem să afișăm numărul de descărcări ale acestui plugin, trebuie doar să adăugăm textul sub editorul postului și rezultatul final ar trebui să fie ceva de genul "Descărcat de 100 de ori".

 Descărcat [mpi slug = "my-plugin-information" field = "downloaded"] de ori.

Utilizarea add_shortcode am înregistrat codul nostru scurt, astfel încât ori de câte ori codul scurt este găsit în conținutul mesajului, funcția render_mpi () va fi chemat să o proceseze. De acum încolo, restul codului va fi plasat în interiorul acestei funcții pentru a trata codul nostru scurt.

Prelucrarea codului scurt cu render_mpi ()

Pentru a afișa informații despre plugin, trebuie mai întâi să procesăm codul scurt pentru a obține atributele. Adăugați codul de mai jos în interiorul render_api funcţie:

 // obține variabila noastră din extractul $ atts (shortcode_atts (array ('slug' => ', // foo este o valoare implicită' field '=> "), $ atts);

Aceasta extrage cele două atribute "slug" și "câmp", dacă acestea sunt furnizate. Înainte de a merge mai departe, verificăm mai întâi dacă valorile pentru "slug" și "câmp" există și dacă nu, atunci oprim prelucrarea.

 / ** * Verificați dacă există slug * / if (! $ Slug) return false;  / ** * Verificați dacă există câmpul * Valoarea returnată pe baza atributului câmpului * / if (! $ Field) return false;  altceva  // $ verificare câmp

Codul de mai sus va verifica dacă există "slug" și dacă nu, atunci acesta va reveni la fals. Dacă există "slug", se va proceda la verificarea atributului "câmp". Din moment ce creăm doar un scurtcod pentru a afișa o anumită informație despre un plugin, verificarea dacă ambele atribute există înainte ca procesarea ulterioară să salveze apelurile inutile la API-ul pluginurilor WordPress.org.

Acum, dacă valorile pentru atributele "slug" și "câmp" sunt furnizate în codul scurt, continuăm înainte, dezinfectând ambele valori.

 // Sanitizează atributele $ slug = sanitize_title ($ slug); $ field = sanitize_title (câmp de $);

Stocarea datelor Plugin în Transients

Pentru a evita trimiterea unei solicitări la WordPress.org de fiecare dată când se încarcă o pagină care conține acest scurtcod, trebuie să salvăm informațiile pluginului local. În acest fel, dacă ați plasat mai multe coduri scurte pentru a afișa diferite detalii ale aceluiași plugin, putem accelera procesul prin afișarea datelor din informațiile salvate local pe site-ul dvs..

Dar dacă pluginul se actualizează și vom continua să afișăm date vechi? Ei bine, pentru a rezolva asta, cea mai rapidă opțiune posibilă este salvarea datelor individuale ale plugin-urilor utilizând API-ul Transients și stabilirea datei de expirare a datelor.

O altă problemă ar fi dacă aveți coduri scurte care recuperează date despre diferite pluginuri. Dacă îi stocăm cu un singur nume tranzitoriu, rezultatul ar putea fi neașteptat. Pentru a aborda acest lucru dăm un nume unic tranzitorilor salvați folosind atributul "slug".

De ce treci prin toate astea?

  • Pentru a salva informații separate despre fiecare plugin
  • Pentru a face mai puține cereri la WordPress.org
  • Pentru a încărca mai repede datele, servind-o direct de pe propriul dvs. site web

Să procedăm mai întâi la crearea unei variabile $ mpi_transient_name pentru a salva numele tranzitorii unice pe baza atributului "slug".

 // Creați o matrice goală cu nume de variabil diferită bazată pe pluginul slug $ mpi_transient_name = 'mpi-'. Slug $;

Apoi verificăm dacă tranzitorul există deja:

 / ** * Verificați dacă există date tranzitorii cu pluginul * / $ mpi_info = get_transient ($ mpi_transient_name);

Dacă există un tranzitoriu, vom continua spre afișarea datelor bazate pe atributul "field" sau altfel pe care le folosim plugins_api pentru a vă conecta la WordPress.org și a solicita informații despre plugin.

 dacă (gol ($ mpi_info)) / ** * Conectați-vă la WordPress.org folosind plugins_api * Despre plugins_api - * http://wp.tutsplus.com/tutorials/plugins/communicating-with-the-wordpress-org-plugin -api / * / require_once (ABSPATH. 'wp-admin / include / plugin-install.php'); $ mpi_info = pluginuri_api ('plugin_information', array ('slug' => $ slug)); // Verificați erorile cu datele returnate din WordPress.org dacă (! $ Mpi_info sau is_wp_error ($ mpi_info)) return false;  // Setați un parametru tranzitoriu cu datele pluginului // Utilizați Opțiuni API cu funcția de actualizare automată cron în versiunea următoare. set_transient ($ mpi_transient_name, $ mpi_info, 1 * HOUR_IN_SECONDS); 

În codul de mai sus, am făcut trei lucruri:

  1. Am fost conectat la WordPress.org și am solicitat informațiile despre plugin. Cererea este apoi salvată într-o variabilă numită $ mpi_info
  2. Apoi efectuăm verificarea erorilor pentru a ne asigura că datele au fost returnate fără eroare
  3. În cele din urmă, am creat un nou tranzitor cu o dată de expirare de o oră

Acum, dacă valoarea atributului slug a fost "mi-plugin-informații"atunci numele tranzitorului care stochează informațiile despre plugin-ul ar fi"-my-MIP plugin-informații".

Notă: Pentru a afla mai multe despre plugins_api se referă la primul articol din această serie, prezentat în partea de sus a acestui post.

Afișarea informațiilor despre plugin

Ultimul pas implică returnarea informațiilor specifice bazate pe valoarea atributului "câmp". Pentru a face acest lucru, pur și simplu folosim controale individuale.

 dacă ($ field == "descărcat") return $ mpi_info-> descărcat;  dacă ($ field == "name") return $ mpi_info-> name;  dacă ($ field == "slug") return $ mpi_info-> slug;  dacă ($ field == "versiunea") return $ mpi_info->;  dacă ($ field == "author") return $ mpi_info-> autor;  dacă ($ field == "author_profile") return $ mpi_info-> author_profile;  dacă ($ field == "last_updated") return $ mpi_info-> last_updated;  dacă ($ field == "download_link") return $ mpi_info-> download_link; 

Înfășurarea în sus

Codul complet al pluginului:

 ", // foo este o valoare implicită" field "=>"), $ atts)); / ** * Verificați dacă există slug * / if (! $ Slug) return false;  / ** * Verificați dacă există câmpul * Valoarea returnată pe baza atributului câmpului * / if (! $ Field) return false;  altceva // Sanitizează atributele $ slug = sanitize_title ($ slug); $ field = sanitize_title (câmp de $); // Creați o matrice goală cu nume de variabil diferită în funcție de pluginul $ mpi_transient_name = 'mpi'. Slug $; / ** * Verificați dacă există date tranzitorii cu pluginul * / $ mpi_info = get_transient ($ mpi_transient_name); dacă (gol ($ mpi_info)) / ** * Conectați-vă la WordPress.org folosind plugins_api * Despre plugins_api - * http://wp.tutsplus.com/tutorials/plugins/communicating-with-the-wordpress-org-plugin -api / * / require_once (ABSPATH. 'wp-admin / include / plugin-install.php'); $ mpi_info = pluginuri_api ('plugin_information', array ('slug' => $ slug)); // Verificați erorile cu datele returnate din WordPress.org dacă (! $ Mpi_info sau is_wp_error ($ mpi_info)) return false;  // Setați un parametru tranzitoriu cu datele pluginului // Utilizați Opțiuni API cu funcția de actualizare automată cron în versiunea următoare. set_transient ($ mpi_transient_name, $ mpi_info, 1 * HOUR_IN_SECONDS);  dacă ($ field == "descărcat") return $ mpi_info-> descărcat;  dacă ($ field == "name") return $ mpi_info-> name;  dacă ($ field == "slug") return $ mpi_info-> slug;  dacă ($ field == "versiunea") return $ mpi_info->;  dacă ($ field == "author") return $ mpi_info-> autor;  dacă ($ field == "author_profile") return $ mpi_info-> author_profile;  dacă ($ field == "last_updated") return $ mpi_info-> last_updated;  dacă ($ field == "download_link") return $ mpi_info-> download_link;  // // verificarea câmpului // render_mpi () // noua clasă DOT_MyPluginInfo (); ?>

Acest cod de plugin este disponibil pe GitHub și îl puteți descărca și de pe WordPress.org


Punerea în acțiune

Acum, puteți merge pur și simplu la editorul dvs. de post și adăugați un scurtcod ca:

 Descărcat [mpi slug = "my-plugin-information" field = "downloaded"] de ori.

Și va afișa:

 Descărcat de 10 ori.

Exemplu Cod scurt pentru a afișa alte informații despre un plugin

Prin înlocuirea valorii atributului "câmp" puteți afișa diferite informații, cum ar fi:

  • Nume plugin: [mpi slug = "meu-plugin-informații" domeniu = "nume"]
  • Versiune Plugin: [mpi slug = "meu-plugin-informații" domeniu = "versiune"]
  • Plugin Slug: [mpi slug = "meu-plugin-informații" domeniu = "slug"]
  • Plugin Author (returnează un nume și un link): [mpi slug = "meu-plugin-informații" domeniu = "autor"]
  • Profilul autor (returnează adresa profilului): [mpi slug = "meu-plugin-informații" domeniu = "author_profile"]
  • Ultima actualizare: [mpi slug = "meu-plugin-informații" domeniu = "last_updated"]
  • Link-ul de descărcare: [mpi slug = "meu-plugin-informații" domeniu = "download_link"]

îmbunătăţiri

Pentru a păstra lucrurile simple, am folosit tranziții pentru a salva informații despre plugin. Cu toate acestea, tranziții nu au fost niciodată folosiți pentru a salva date importante. O metodă alternativă ar fi salvarea datelor plugin-ului fie folosind API-ul Opțiuni, add_options (), sau ca post meta și apoi programați o sarcină cron pentru actualizarea datelor pe oră.


Ce urmează?

Utilizarea plugins_api am demonstrat cât de ușor este de a comunica și de a prelua informații despre orice plugin găzduit pe WordPress.org.

S-ar putea să doriți, de asemenea, să vă uitați la alte plugin-uri, cum ar fi Info Plugin (care utilizează de asemenea plugins_api, și eu fac Plugin-uri, pentru a vedea cum au realizat aceeași sarcină.

Cod