Bygg en Nylig innlegg Widget Drevet av SimplePie

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.

Introduksjon til SimplePie

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.

Komme i gang med SimplePie

For å installere og komme i gang med SimplePie, sjekk ut følgende trinn:

  1. Last ned SimplePie-biblioteket og opprett to mapper: php og cache.
  2. Laste opp bibliotek/ og autoloader.php til php mappe du nettopp opprettet.
  3. SimplePie er nå installert og klar til bruk.

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_permalink (); ?> ">get_title (); ?>

get_description (); ?>

get_items () som $ item):?>

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.

Prestasjonsfordel ved å spørre innlegg fra feed over database

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.

Bygg en nylig innleggspakke med SimplePie

Å 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.

  1. Lag en klasse som utvider WP_Widget
    klassen Tutsplus_simplepie strekker seg WP_Widget 
  2. Gi widgeten et navn og en beskrivelse via __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 '),)); 
  3. De 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'];
  4. 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); ?> 
    • get_permalink ()); ?> "title =" get_title ()); ?> "> get_title ()); ?> ". $ item -> get_date ('F j Y')."";?> ". $ item -> get_description ()."
";?>
  • Lag widgetinnstillingsskjemaet med 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']; ?> 

    ">

    ">

  • Endelig 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; ?> 
    • get_permalink ()); ?> "title ="get_title ()); ?> "> get_title ()); ?> ". $ item-> get_date ('F j Y')."";?> ". $ item-> get_description ()."
    ";?>

    Merk på Widget

    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.

    Konklusjon

    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:

    1. Den første er widgeten bygget med SimplePie.
    2. Den andre er bygget ved hjelp av WordPress hente feedfunksjon som tilfeldigvis også bruker SimplePie biblioteket.

    Forhåpentligvis hjelper dette med å jobbe med å bygge widgets og SimplePie i fremtiden. 

    Gi meg beskjed om dine tanker i kommentarene!