WordPress: preluând din RSS-uri (II)


Am tratat acest subiect mai întâi în septembrie 2008. Dacă ne uităm însă în documentaţia WordPress vom vedea la fetch_rss că e… pe moarte (“This function has been deprecated”). Ni se recomandă în schimb să folosim fetch_feed. Din fericire funcţiile seamănă. Este practica WordPress de a oferi funcţii simple care în spate folosesc tehnologii mai elaborate. Dacă vechea funcţie folosea MagpieRSS şi RSSCache, noua funcţie merge pe mâna lui SimplePie şi FeedCache. Dar să vedem o problemă concretă. Eu lucrez acum la rescrierea unui sit mare, ce va fi împărţit în mai multe situri. Voi vrea însă ca pe situl mamă să pot afişa ultimele articole de pe un sit copil. Cum fac aceasta? Funcţia fetch_rss face treaba foarte uşoară.

imagine

În captura de mai sus vedeţi mai sus situl “copil”, sit WordPress cu documente. Are evident flux RSS. Am vrut ca în situl “mamă” să apară ultimele documente. Am creat o pagină nouă în care am scris [documente]. Şi cum fac să apară acolo ultimele documente? Cu următorul cod pe care îl puteţi pune de exemplu în functions.php (între fişierele temei… dacă nu există, creaţi-l). În maxim un minut problema a fost rezolvată. Puteţi schimba shortcode-ul, evident feed-ul, textele ajutătoare şi adapta pentru nevoile Dvs.

<?php
function documenteLista($atts){
        include_once(ABSPATH . WPINC . '/feed.php');
        $rss = fetch_feed('http://documente.catholica.ro/feed/');
        $maxitems = $rss->get_item_quantity(10);
        $rss_items = $rss->get_items(0, $maxitems);
        ?>
        <ul>
                <?php if ($maxitems == 0) echo '<li>Nimic... gol... zero...</li>';
                else { echo 'Lista celor mai recente 10 documente.</p>';
                foreach ( $rss_items as $item ) { ?>
                <li>
                        <a href='<?php echo $item->get_permalink(); ?>' target='_blank'><font size=+1>
                        <?php echo $item->get_title(); ?></font></a><br>
                        <?php echo 'Publicat la <em>'.$item->get_date('j F Y').'</em>'; ?><br>
                        <?php echo $item->get_description(); ?><br><br>
                </li>
                <?php } } ?>
        </ul>
        <?
}

add_shortcode('documente','documenteLista');
?>

PS: Evident puteţi folosi funcţia (şi părţi din codul de mai sus) pentru a afişa în sidebar ultimele articole dintr-un feed (al unui sit partener de exemplu). Şi un aspect important dar mai tehnic: dacă un flux RSS nu apare actualizat, se datorează mecanismului de cache. Trebuie răbdare. Dacă vă grăbiţi puteţi accelera actualizarea umblând la tabela wp_options, ştergând de acolo înregistrările cu _transient_feed_(cifre şi litere) din option_name. În aceste câmpuri sunt menţinute datele fluxurilor pentru a nu fi cerute decât periodic, nu la fiecare acces (inclusiv pentru afişările din prima pagină a back-end-ului WP).


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (1 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *