profile image

Rick de Jong

Strategie

May 24, 2015 08:04

Realtime XML in WordPress

Handig voor bijvoorbeeld nieuwstickers

Als plugin ontwikkelaar is Tussendoor bekend met het verwerken van XML bestanden aan de achterzijde van WordPress. Op deze manier kun je gegevens eenvoudig wegschrijven in de database, waardoor je geheel vrij bent in de weergave hiervan.

Onlangs kregen we echter ook de vraag om een kleine XML-feed realtime weer te geven in een WordPress thema. Hieronder zie je hoe je dat eenvoudig voor elkaar krijg. Het voordeel hiervan is dat je geen teksten een-op-een overneemt en op deze manier duplicate content verliest. Als extra pluspunt biedt het de bezoekers van de website (veel) meer informatie, dan wanneer de feed niet beschikbaar was.

Inladen XML feed in WordPress

Er zijn twee manieren om een XML-feed realtime in te laten in de WordPress. Een eenvoudige en een iets complexere, maar mooiere, manier. Laten we beginnen met de meest eenvoudige:.

WordPress beschikt standaard over een functie om XML-bestanden in te lezen en weer te geven (wp_rss). Deze roepen we als volgt aan.

include_once(ABSPATH.WPINC.'/rss.php');

Vervolgens geven we aan welke feed we willen inladen, met daarachter het aantal items dat we willen laten zien. In ons geval tien.

wp_rss('http://tussendoor.nl/jouw-feed/', 10);

De totale functie is nu als volgt

include_once(ABSPATH.WPINC.'/rss.php');
wp_rss('http://tussendoor.nl/jouw-feed/', 10);

Op deze manier laden we op een uitermate eenvoudige manier de feed in waarbij we tien items tonen.

De uitgebreidere manier om XML in te lezen

Hieronder zie je de code van de iets uitgebreidere manier. Het voordeel hieran is, is dat je de items lost doorloopt, waardoor je volledige controle hebt over de weergave en dus de stijling hiervan.

<?php  
include_once(ABSPATH.WPINC.'/rss.php'); // het inladen van de functie  
$feed = fetch_rss('http://tussendoor.nl/jouw-feed/'); // het inladen van de feed  
$items = array_slice($feed->items, 0, 10); // het tonen van tien items (dit nummer kun je aanpassen)
?>
<?php if (!empty($items)) : ?>
<?php foreach ($items as $item) : ?>

<h3><a href="<?php echo $item['link']; ?>"><?php echo $item['title']; ?></a></h3>
<p><?php echo $item['description']; ?></p>

<?php endforeach; ?>
<?php endif; ?>

Bovenstaande code doorloopt item voor item de feed en stopt de titel in een H2-tag met daaronder de omschrijving in een p-element. Uiteraard kun je deze elementen veranderen en voorzien van classes. That's it.