În acest tutorial, voi introduce SimplePie, construiesc un plug-in widget care afișează articole publicate recent publicate din feedul WordPress folosind SimplePie și discuta despre avantajele de performanță ale interogării mesajelor din feedul WordPress în locul bazei de date.
SimplePie este un parser de feed gratuit, foarte rapid și ușor de folosit, scris în PHP, care gestionează toate lucrările murdare când vine vorba de preluare, cache, parsare, normalizarea structurilor de date între formate, manipularea traducerii codificării caracterelor și dezinfectarea rezultate.
Pentru a instala și a începe să utilizați SimplePie, consultați următorii pași:
php
și ascunzătoare
.bibliotecă/
și autoloader.php
la php
dosarul pe care l-ați creat.Să vedem cum să folosim SimplePie pentru a prelua conținut găsit într-un feed.
set_feed_url ('http://feeds.fedburner.com/tech4sky'); // Run SimplePie. $ Feed> init (); // Trimiteți conținut în browser ca text / html și setul de caractere UTF-8. $ Feed> handle_content_type (); ?>Exemplu SimplePie Page get_items () ca element $):?>get_permalink (); ?> ">get_title (); ?>
get_description (); ?>
get_permalink (); ?> ">get_title (); ?>
get_description (); ?>
postat pe get_date ('j F Y | g: i a'); ?>
SimplePie este ușor de instalat și de utilizat, nu-i așa??
În următoarea secțiune, vom construi un widget care afișează recent publica articolele extrase din feedul WordPress.
Mulți dintre noi folosesc un widget pentru afișare Postări recente pe bara laterală a blogului nostru WordPress. Multe dintre aceste pluginuri interoghează baza de date pentru a prelua articolele publicate recent.
Având în vedere faptul că aplicația web bazată pe baze de date, cum ar fi WordPress, necesită o interogare și scriere a timpului în baza de date, este corect să spunem că cu cât numărul de interogări de bază de date este mai mic, cu atât mai mare am putea vedea în momentul încărcării paginii.
În loc să interogăm baza de date, am putea prelua articolele publicate recent din feedul nostru WordPress utilizând SimplePie care poate îmbunătăți în mod semnificativ performanța.
SimplePie are mai multe opțiuni pentru încorporarea datelor de alimentare încorporate, astfel încât să nu trebuie să trageți întregul feed de fiecare dată.
Unul dintre acestea este bazate pe fișiere
sistemul de caching care stochează elementul de alimentare cache într-un director care poate fi scris în format server, care maximizează performanța.
Construirea unui widget în WordPress este ușor și direct.
Mai întâi, extindeți WP_Widget
clasa, include aceste patru metode: __construi()
, widget ()
, formă()
, Actualizați()
în clasă și înregistrați în final widgetul.
WP_Widget
clasa Tutsplus_simplepie extinde WP_Widget
__construi()
magie funcția __construct () parent: __ construct ('tutsplus_widget', // Base ID __ ('Mesaj recent alimentat de SimplePie', 'text_domain'), // Nume array ('description' => din feedul WordPress folosind SimplePie ',' text_domain '),));
widget ()
metoda afișează partea frontală a widget-ului. funcția publică ($ args, $ instance) $ feedURL = goală ($ instance ['feedURL'])? Adresa paginii() . '/ feed': $ instanță ['feedURL']; $ feedNumber = goală ($ instanță ['feedNumber'])? 5: $ instanță ['feedNumber']; $ showDate = goală ($ instance ['showDate'])? 0: 1; $ showDescription = goală ($ instance ['showDescription'))? 0: 1; echo $ args ['anterior_widget']; $ title = apply_filters ('widget_title', $ instanță ['title']); dacă (! gol ($ title)) echo $ args ['before_title']. titlul $. $ args [ 'after_title'];
requ_once 'php / autoloader.php'; // Instanțiați și procesați acest feed cu toate opțiunile implicite. $ feed = nou SimplePie (); // Stabiliți ce feed să procesați. $ feed-> set_feed_url ($ feedURL); // Stabiliți unde ar trebui stocate fișierele cache $ feed-> set_cache_location (plugin_dir_path (__FILE__). 'Cache'); // Run SimplePie. $ Feed> init (); // asigurați-vă că conținutul este trimis în browser ca text / html și setul de caractere UTF-8 $ feed-> handle_content_type (); // Aflați câte elemente totale există, dar limitați-le la 5. $ maxitems = $ feed-> get_item_quantity ($ feedNumber); // Construiește o matrice a tuturor elementelor, pornind de la elementul 0 (primul element). $ rss_items = $ feed-> get_items (0, $ maxitems); ?>
formă()
metodă formularul funcției publice ($ instanță) $ defaults = array ('title' => 'Postări recente', 'feedURL' => get_site_url (). $ instanță = wp_parse_args ((array) $ instanță, implicit $); $ title = $ instanță ['titlu']; $ feedURL = $ instanță ['feedURL']; $ feedNumber = $ instanță ['feedNumber']; $ showDate = $ instanță ['showDate']; $ showDescription = $ instanță ['showDescription']; ?>"tip =" text "valoare ="„>
"tip =" text "valoare ="„>
"dimensiune =" 3 "tip =" valoare text "="„>
„>
„>
Actualizați()
metoda dezinfectă și salvează setările widget-urilor în baza de date. actualizarea funcției publice ($ new_instance, $ old_instance) $ instance = array (); $ instanță ['title'] = (! empty ($ new_instance ['title']))? strike_tags ($ new_instance ['titleURL']): "; $ instanță ['feedURL'] = (! $ instanță ['feedNumber'] = (! gol ($ new_instance ['feedNumber']))? strip_tags ($ new_instance ['showDate']): "; $ instanță ['showDate'] = (! $ instanță ['showDescription'] = (! gol ($ new_instance ['showDescription']))? strip_tags ($ new_instance ['showDescription']): "; retur $ instance;
Funcția de preluare WordPress fetch returnează feed-ul și o analizează utilizând SimplePie. Dacă doriți să utilizați fetch feed
în loc de a implementa SimplePie de la sol, schimbați widget ()
în interiorul metodei Tutsplus_simplepie
Widget clasa la codul de mai jos.
funcția publică ($ args, $ instance) $ feedURL = goală ($ instance ['feedURL'])? site_url (). '/ feed': $ instanță ['feedURL']; $ feedNumber = (int) gol ($ instanță ['feedNumber'])? 5: $ instanță ['feedNumber']; $ showDate = goală ($ instance ['showDate'])? 0: 1; $ showDescription = goală ($ instance ['showDescription'))? 0: 1; echo $ args ['anterior_widget']; $ title = apply_filters ('widget_title', $ instanță ['title']); dacă (! empty ($ title)) echo $ args ['before_title']. titlul $. $ args [ 'after_title']; include_once (ABSPATH.WPINC. '/feed.php'); // Obțineți un obiect de feed SimplePie din sursa de alimentare specificată. $ rss = fetch_feed ($ feedURL); if (! is_wp_error ($ rss)): // Verifică că obiectul este creat corect // Aflați câte elemente totale există, dar limitați-le la 5. $ maxitems = $ rss-> get_item_quantity ($ feedNumber); // Construiește o matrice a tuturor elementelor, pornind de la elementul 0 (primul element). $ rss_items = $ rss-> get_items (0, $ maxitems); endif; ?>
Aspectul widget-ului va varia de la temă la temă în funcție de foaia dvs. de stil. Unii dintre noi găzduiesc feed-ul nostru pe FeedBurner, așa că am adăugat un câmp de opțiuni URI de alimentare în formularul de setări widget incase pe care doriți să îl modificați cu setul de feed prestabilit setat http://yoursite.com/feed
.
Alte opțiuni widget includ modificarea numărului "Mesaj recente" pentru a afișa, afișa / ascunde rezumatul postului și data pentru fiecare postare.
Am terminat construirea widget-ului recent. Pentru a înțelege mai mult modul în care widget-ul a fost construit și modul de implementare a acestuia pe site-ul dvs. WordPress, descărcați fișierul tutorial.
Când este extras, fișierul conține două fișiere de pluginuri ZIP:
Sperăm că acest lucru va ajuta în lucrul cu widget-urile de construcție și SimplePie în viitor.
Permiteți-mi să vă cunosc gândurile în comentariile dvs.!