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?
- fetch_feed
- SimplePie funkcie:
- substr
ZDROJ: http://digwp.com/2009/11/import-and-display-feeds-in-wordpress/