Î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.
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:
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.
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:
Î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.
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.
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 $);
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".
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:
$ mpi_info
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.
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;
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
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.
Prin înlocuirea valorii atributului "câmp" puteți afișa diferite informații, cum ar fi:
[mpi slug = "meu-plugin-informații" domeniu = "nume"]
[mpi slug = "meu-plugin-informații" domeniu = "versiune"]
[mpi slug = "meu-plugin-informații" domeniu = "slug"]
[mpi slug = "meu-plugin-informații" domeniu = "autor"]
[mpi slug = "meu-plugin-informații" domeniu = "author_profile"]
[mpi slug = "meu-plugin-informații" domeniu = "last_updated"]
[mpi slug = "meu-plugin-informații" domeniu = "download_link"]
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ă.
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ă.