Met een klein php-scriptje kun je de rss-feed van een WordPress blog op een andere website zetten. Het onderstaande stukje php-code haalt de feed op en maakt er html van. Je kunt dit alleen gebruiken in een php-pagina en het werkt alleen als je provider php ondersteunt – maar dat doen vrijwel alle providers tegenwoordig.
1. Plaats de PHP-code
Plaats de code op de plek op je webpagina waar je de feed van de WordPress blog wilt weergeven. Ik plaats de php-code tussen <div id=”feed”> en </div>
tags, waardoor ik hem gemakkelijk kan opmaken met css.
Als voorbeeld heb ik hier de feed van een van mijn websites gebruikt. Vervang de url in de eerste regel van het script door de url van jouw rss-feed. De url van de rss feed van je WordPress website is de url met daar achter /feed. Bijvoorbeeld: http://www.jouwwebsite.nl/feed
<?php // Plaats hieronder tussen de enkele aanhalingstekens // de url van je feed, op de plaats waar hier als voorbeeld // http://www.e-rik.nl/feed staat define(feed,'http://www.e-rik.nl/feed'); // de volgende regel haalt de feed van de server op $xml_feed = file_get_contents(feed); // de volgende regel creëert een xml parser $xml_parser = xml_parser_create(); // de volgende regel vertelt de xml parser welke variabelen er zijn xml_parse_into_struct($xml_parser,$xml_feed,$xml_keys,$xml_index); // de volgende regel voert het parsen uit xml_parser_free($xml_parser); for($i = 0;!empty($xml_index['TITLE'][$i]);$i++){ // de volgende regel genereert de kop boven je RSS-feed if($i == 0){ echo ' <h3>Nu op <a href="'.$xml_keys[$xml_index['LINK'][$i]]['value'].'">'.strtolower($xml_keys[$xml_index['LINK'][$i]]['value']).' </a></h3> <p>'; }else{ // de volgende regels genereren de berichten // met bij elk bericht kopregel en samenvatting echo '<span class="heading"><a href="'.$xml_keys[$xml_index['LINK'][$i]]['value'].'">'.$xml_keys[$xml_index['TITLE'][$i]]['value']. '</a></span>'.$xml_keys[$xml_index['DESCRIPTION'][$i]]['value'].'</p> <p>'; }} ?>
2. Style je feed
Je feed style je eenvoudig met css. Dat gebeurt via id=”feed” in de omsluitende div-tag en class=”heading” in de span-tag. De css zet je in een stylesheet. Bijvoorbeeld:
#feed { font-family: verdana, sans-serif; width: 200px; padding: 5px; font-size: 0.8em; text-align: left; line-height: 1.7em; -moz-box-shadow: 0px 0px 16px 1px #ddd; box-shadow: 0px 0px 16px 1px #ddd; -webkit-box-shadow: 0px 0px 16px 1px #ddd; border: 1px solid #ddd; } #feed .heading a{ font-size: 1.2em; font-weight: bold; color: #446488; }
3. Klaar!
De codefragmenten op deze pagina zijn opgemaakt met de plugin SyntaxHighlighter Evolved.
Door de rss-feed van een WordPress blog op een andere website te plaatsen, creëer je in één keer een aantal backlinks naar het blog. Dit kan bijdragen aan een betere positie in zoekmachines (SEO).
Bedankt voor de code! Ik heb nu een RSS feed van mijn nieuwsberichten op mijn startpagina gezet. Is het mogelijk op deze manier ook een maximaal aantal berichten voor de feed in te stellen?
met vriendelijke groet,
Katrien Joosten
Hoi Katrien,
Je kunt dit op twee manieren doen.
Als de feed afkomstig is van een WordPress blog, kun je daar in de settings aangeven hoeveel berichten er in de feed moeten worden opgenomen.
Je kunt ook de code van het script wijzigen, zodat het script de output beperkt tot de laatste x berichten.
Verander daartoe de volgende regel:
for($i = 0;!empty($xml_index['TITLE'][$i]);$i++){
in:
for($i = 0;$i<3;$i++){
waarbij
$1<3
bepaalt hoeveel berichten er worden weergegeven (-1).Als dit getal groter is dan het aantal berichten in de feed worden alle berichten in de feed getoond (en mogelijk een foutmelding, dat heb ik nog niet getest :)
Mooi script is er ook een mogelijkheid om het aantal te weergeven woorden aan te passen bv max 200 worden per feed alvast bedankt !
Hoi Jordi,
Het aantal woorden dat wordt weergegeven in de feed wordt bepaald door de instellingen van de site waar de feed vandaan komt. Ten eerste bij Instellingen/Lezen, staat daar toon het hele bericht of de samenvatting? Vervolgens maakt het verschil of je in een bericht de samenvatting hebt ingevuld of niet. Tenslotte zul je in functions.php of in een custom plugin de lengte van de samenvatting en de lengte van de feed tekst moeten aanpassen. Dus het kan wel maar het vergt wel de nodige regeltjes code.
Kijk voor meer informatie over het creëren van een custom lengte van rss feeds hier.
Voor het aanpassen van de excerpt-lengte kun je deze code gebruiken: