Import a zobrazenie RSS správ z externého zdroja

WordPress umožňuje pomocou základného widgetu “RSS” odoberať správy z hocijakého RSS/Atom kanála a zobrazovať ich v bočnom panely. Okrem toho má WordPress v sebe zabudovanú funkciu, ktorú môžte použiť na ľubovoľnom mieste v téme, alebo ju integrovať do vášho modulu a tak vytvoriť svoju vlastnú čítačku správ vo formáte akom potrebujete.

Využitie sa tomu dá nájsť naozaj rôznorodené, napríklad ak chcete zobrazovať vaše posledné “tweety”, fotky z “flickeru”, alebo len jednoducho zobraziť články z vašich ďalších stránok.

Budeme používať funkciu fetch_feed, ktorá využíva funkcionalitu SimplePie a FeedCache, čo nám umožňuje tieto správy “odoberať” a dočasne uchovávať (caching).

Začneme tým, že skontrolujeme, či daná funkcia vo WordPresse naozaj existuje (pre prípad, že by sme mali staršiu verziu WordPressu ako 2.8 a v budúcnosti zase príliš novú), aby nám to zbytočne nevyhadzovalo chyby. Ak je táto základná podmienka splnená, tak vložíme požadovaný a potrebný súbor feed.php. Potom už konečne použijeme našu funkciu fetch_feed, do ktorej špecifikujeme URL adresu RSS/Atom kanála.

<?php if(function_exists('fetch_feed')) {

	include_once(ABSPATH . WPINC . '/feed.php'); // obsiahneme požadovaný súbor
	$feed = fetch_feed('http://www.wp.sk/feed/'); // špecifikujeme RSS zdroj ( v našom prípade RSS správy z WP.sk)
} ?>

Po týchto krokoch sú všetky XML (eXtensible Markup Language) dáta načítané ako štandartný SimplePie objekt, ktorý sme premietli do premennej $feed. Teraz už s nimi môžme za pomoci SimplePie narábať a zobraziť ich tak ako potrebujeme.

Ako prvú vec zadefinujeme počet položiek, ktoré chceme zobraziť:

$limit = $feed->get_item_quantity(7); // "7" určuje počet položiek

Ďalej všetky tieto položky premietneme do poľa (array), čo nám umožní prechádzať cez jednotlivé položky a zobraziť veci ako nadpis, dátum ,obsah…

$items = $feed->get_items(0, $limit); // vytvorenie poľa z našich položiek

Všimnite si, že prvá položka je označená ako “0″ a posledná ako $limit – zadefinované v predchádzajúcom kroku.

Teraz už môžme postupne prechádzať jednotlivé položky z RSS zdroja určeného URL adresou a zobraziť požadované informácie, čo v tomto prípade budú nadpis, URL odkaz a dátum. Pred tým ale ešte skontrolujeme, či zdroj nie je prázdny a v prípade ak áno, zobrazí sa prislúchajúca hláška.

<ul>

   <?php if ($limit == 0) { ?>

   <li>RSS kanále je prázdny, alebo nedostupný!</li>

   <?php } else { foreach ($items as $item) : ?>

   <li>
      <a href="<?php echo $item->get_permalink(); /* URL adresa */ ?>" title="<?php echo $item->get_date('j F Y @ g:i a'); /* dátum */?>">
         <?php echo $item->get_title(); /* nadpis */?>
      </a>
   </li>

   <?php endforeach; } ?>

</ul>

Ak by sme chceli zobrazovať ešte aj časť obsahu položky/správy tak to docielime pridaním takéhoto kódu:

<?php echo $item->get_description(); ?>

Je tiež možné zobraziť názov/nadpis zdroja:

<?php echo $feed->get_title(); ?>

Samozrejme, že sa dá toho zobraziť oveľa viac, všetko potrebné sa dozviete v dokumentácií SimplePie a v jeho API (poprípade napíšte do komentáru k tomu návodu, čo by ste potrebovali, alebo navštívte naše podporné fórum).

Ako by to malo asi vyzerať celé v praxi:

<?php if(function_exists('fetch_feed')) {

	include_once(ABSPATH . WPINC . '/feed.php'); // obsiahneme požadovaný súbor
	$feed = fetch_feed('http://www.wp.sk/feed/'); // špecifikujeme RSS zdroj ( v našom prípade RSS správy z WP.sk)

	$limit = $feed->get_item_quantity(7); // "7" určuje počet položiek
	$items = $feed->get_items(0, $limit); // vytvorenie poľa z našich položiek

} ?>
<ul>
<?php
if ($limit == 0) echo '<li>RSS kanále je prázdny, alebo nedostupný!.</li>';
else foreach ($items as $item) : ?>

<li>
<div>
	      <a href="<?php echo $item->get_permalink(); /* URL adresa */ ?>" title="<?php echo $item->get_date('j F Y @ g:i a'); /* dátum */?>">
	      <?php echo $item->get_title(); /* nadpis */?>
	      </a>
</div>
<div>
	<?php echo substr($item->get_description(), 0, 200);  /* prvých 200 znakov z obsahu */?>
	<span>[...]</span>
</div>
</li>

<?php endforeach; ?>
</ul>

Pomocou tohto príkladu importujeme posledných 7 článkov z WP.sk a zobrazíme ich nadpis a prvých 200 znakov z obsahu a zároveň vytvoríme odkaz na každú jednu položku, pričom pri nájdení kurzorom nad tento odkaz sa zobrazí čas publikovania daného článku.

Aké funkcie sme to vlastne použili?


ZDROJ: http://digwp.com/2009/11/import-and-display-feeds-in-wordpress/

Leave a Comment

Previous post:

Next post: