I denne opplæringen vil jeg introdusere SimplePie, bygge et widget-plugin som viser nylig publiserte artikler som er forespurt fra WordPress-feeden ved hjelp av SimplePie, og diskutere ytelsesfordelen ved å spørre innlegg fra WordPress-strømmen i stedet for databasen.
SimplePie er en gratis, veldig rask og enkel å bruke feed parser, skrevet i PHP som håndterer alt det skitne arbeidet når det gjelder henting, caching, parsing, normalisering av datastrukturer mellom formater, håndtering av tegnkoding oversettelse og sanering av resulterende data.
For å installere og komme i gang med SimplePie, sjekk ut følgende trinn:
php
og cache
.bibliotek/
og autoloader.php
til php
mappe du nettopp opprettet.La oss se hvordan du bruker SimplePie til å hente innhold som finnes i en feed.
set_feed_url ('http://feeds.fedburner.com/tech4sky'); // Kjør SimplePie. $ Fôr-> init (); // Send innhold til nettleseren som tekst / html og UTF-8 tegnsett. $ Fôr-> handle_content_type (); ?>Eksempel SimplePie Page get_items () som $ item):?>get_permalink (); ?> ">get_title (); ?>
get_description (); ?>
get_permalink (); ?> ">get_title (); ?>
get_description (); ?>
postet på get_date ('J F Y | g: i a'); ?>
SimplePie er enkelt å installere og bruke, er det ikke?
I neste avsnitt skal vi bygge en widget som viser nylig publisere artikler hentet fra WordPress-feed.
Mange av oss bruker en widget som skal vises Siste innlegg på sidelinjen av vår WordPress blogg. Mange av disse pluginene spør etter databasen for å hente de nylig publiserte artiklene.
Tatt i betraktning det faktum at database-drevet web-applikasjon som WordPress tar tid å spørre og skrive til databasen, er det rimelig å si at jo færre antall databasespørsmål, desto større er forbedringen vi kan se på vår side.
I stedet for å spørre databasen, kunne vi hente de nylig publiserte artiklene fra vår WordPress-feed ved hjelp av SimplePie som kan forbedre ytelsen betydelig.
SimplePie har flere alternativer for å cache feeddata innebygd, slik at du ikke trenger å trekke hele strømmen hver gang.
En av disse er filbasert
caching system som lagrer cache feed element i en server-skrivbar katalog som ytterligere maksimere ytelsen.
Å bygge en widget i WordPress er enkelt og rett frem.
Først forlenge WP_Widget
klassen, inkludere disse fire metodene: __construct ()
, widget ()
, form ()
, Oppdater()
i klassen og til slutt registrere widgeten.
WP_Widget
klassen Tutsplus_simplepie strekker seg WP_Widget
__construct ()
magisk metode funksjon __construct () foreldre :: __ construct ('tutsplus_widget', // Base ID __ ('Nylig innlegg drevet av SimplePie', 'text_domain'), // Name array ('description' => __ (' fra WordPress-feed ved hjelp av SimplePie ',' text_domain '),));
widget ()
Metoden viser fronten av widgeten. offentlig funksjon widget ($ args, $ forekomst) $ feedURL = tom ($ instance ['feedURL'])? site_url (). '/ feed': $ instance ['feedURL']; $ feedNumber = empty ($ instance ['feedNumber'])? 5: $ instance ['feedNumber']; $ showDate = tomt ($ instance ['showDate'])? 0: 1; $ showDescription = empty ($ instance ['showDescription'])? 0: 1; ekko $ args ['before_widget']; $ title = apply_filters ('widget_title', $ instance ['title']); hvis (! tom ($ tittel)) echo $ args ['before_title']. $ tittel. $ args [ 'after_title'];
require_once 'php / autoloader.php'; // Instantiate og behandle denne feeden med alle standardvalgene. $ feed = new SimplePie (); // Angi hvilken mat som skal behandles. $ feed-> set_feed_url ($ feedURL); // Angi hvor cachefilene skal lagres $ feed-> set_cache_location (plugin_dir_path (__FILE__). 'Cache'); // Kjør SimplePie. $ Fôr-> init (); // sørg for at innholdet sendes til nettleseren som tekst / html og UTF-8 tegnsettet $ feed-> handle_content_type (); // Finn ut hvor mange totale elementer det er, men begrens det til 5. $ maxitems = $ feed-> get_item_quantity ($ feedNumber); // Bygg en rekke av alle elementene, begynner med element 0 (første element). $ rss_items = $ feed-> get_items (0, $ maxitems); ?>
form ()
metode offentlig funksjon skjema ($ forekomst) $ standard = array ('title' => 'Nylige innlegg', 'feedURL' => get_site_url (). '/ feed', 'feedNumber' => 5); $ instance = wp_parse_args ((array) $ forekomst, $ standardverdier); $ title = $ instance ['title']; $ feedURL = $ instance ['feedURL']; $ feedNumber = $ instance ['feedNumber']; $ showDate = $ instance ['showDate']; $ showDescription = $ instance ['showDescription']; ?>
">
">
Oppdater()
Metoden sanitiserer og lagrer widgetinnstillingene til databasen. offentlig funksjon oppdatering ($ new_instance, $ old_instance) $ instance = array (); $ instance ['title'] = (! tomt ($ new_instance ['title'])))? strip_tags ($ new_instance ['title']): "; $ instance ['feedURL'] = (! tomt ($ new_instance ['feedURL'])) strip_tags ($ new_instance ['feedURL']):"; $ instance ['feedNumber'] = (! tomt ($ new_instance ['feedNumber'])))? strip_tags ($ new_instance ['feedNumber']): "; $ forekomst ['showDate'] = (! tomt ($ new_instance ['showDate']))? strip_tags ($ new_instance ['showDate']):"; $ instance ['showDescription'] = (! tomt ($ new_instance ['showDescription'])))? strip_tags ($ new_instance ['showDescription']): "; return $ instance;
WordPress hente feed funksjonen henter også feed og analyserer den ved hjelp av SimplePie. Hvis du ønsker å bruke hente feed
funksjon i stedet for å implementere SimplePie fra grunnen opp, endre widget ()
metode inne i Tutsplus_simplepie
Widget klasse til koden nedenfor.
offentlig funksjon widget ($ args, $ forekomst) $ feedURL = tom ($ instance ['feedURL'])? site_url (). '/ feed': $ instance ['feedURL']; $ feedNumber = (int) tomt ($ instance ['feedNumber'])? 5: $ instance ['feedNumber']; $ showDate = tomt ($ instance ['showDate'])? 0: 1; $ showDescription = empty ($ instance ['showDescription'])? 0: 1; ekko $ args ['before_widget']; $ title = apply_filters ('widget_title', $ instance ['title']); hvis (! tom ($ title)) echo $ args ['before_title']. $ tittel. $ args [ 'after_title']; include_once (ABSPATH. WPINC. '/feed.php'); // Få et SimplePie-feedobjekt fra den angitte strømkilden. $ rss = hente_feed ($ feedURL); hvis (! is_wp_error ($ rss)): // Kontrollerer at objektet er opprettet riktig // Finn ut hvor mange totale elementer det er, men begrens det til 5. $ maxitems = $ rss-> get_item_quantity ($ feedNumber); // Bygg en rekke av alle elementene, begynner med element 0 (første element). $ rss_items = $ rss-> get_items (0, $ maxitems); slutt om; ?>
Utseendet på widgeten vil variere fra tema til tema basert på stilarket ditt. Noen av oss vert vår feed på FeedBurner, så jeg har lagt til et feed-URI-alternativfelt i widgetinnstillingsskjemaet, i tilfelle du vil endre det med standardmatingssettet til http://yoursite.com/feed
.
Andre widgetalternativer inkluderer å endre nummeret "Nylig innlegg" for å vise, vise / skjule innleggsoppsummering og dato for hvert innlegg.
Vi er ferdige med å bygge den siste innleggsmodulen. For å forstå hvordan widgeten ble bygget og hvordan å implementere den på WordPress-siden din, last ned veiledningsfilen.
Når den hentes, inneholder filen to plugin-filer glidelås:
Forhåpentligvis hjelper dette med å jobbe med å bygge widgets og SimplePie i fremtiden.
Gi meg beskjed om dine tanker i kommentarene!