WordPress: preluând din RSS-uri


RSS-urile pot să fie o mare pacoste, fiind uşor de "furat". Sunt atâtea situri care nu au conţinut propriu nimic, dar preiau automat din feed-uri şi afişează reclame încasând bani din ele. De aceea unii evită să ofere RSS integral. Cât de greu este să preiei datele dintr-un flux RSS? Vom analiza cazul WordPress, folosind cunoscuta librărie Magpie. Ne vom folosi şi de un shortcode (vezi articolul de săptămâna trecută), pentru ca scriind un singur cuvânt să avem apelată funcţia ce parcurge RSS-ul. Ca exemplu concret am să ofer ceea ce folosim aici. Îmi plac tapeturile oferite de Interfacelift, aşa că m-am gândit, demonstrativ, să parcurg RSS-ul lor pentru a afişa noutăţile lor. Astfel, în stânga mai jos vedeţi articolul scris în WordPress, iar în dreapta jos rezultatul în WordPress.

img311

Şi acum codul, nu? Reţineţi: e un exemplu concret, adaptabil la tot felul de alte situaţii. Codul efectiv e de doar 26 de linii (mai puţine în realitate). În linia 10 ne asigurăm că avem acces la funcţiile pentru lucrul pe feed. În linia 17 preluăm feed-ul în variabila $rss, după care în linia următoare o „spargem” pe elemente. Fiecare item îl vom parcurge şi ne vom folosi de diverse funcţii pe string pentru a lua ce ne interesează. Reţineţi că liniile din bucla foreach sunt particulare feed-ului pe care îl folosim. Codul generic include linia 10, apoi evident 17,18,19… Desigur, majoritatea feed-urilor includ elemente gen author, link, title, pubdate

<?php
/**
Plugin Name: Tapeturi Inferfacelift
Author URI: http://familia.capan.ro
Plugin URI: http://www.cnet.ro
Description: Afiseaza ultimele imagini adaugate pe Interfacelift.com, via RSS
Author: Radu Capan
Version: 0.1
*/
require_once(ABSPATH .'/wp-includes/rss.php');
add_shortcode('interfacelift', 'func_interfacelift');
function func_interfacelift($atts){
	$lunile=array("","ianuarie"=>"Jan","februarie"=>"Feb","martie"=>"Mar","aprilie"=>"Apr",
		"mai"=>"May","iunie"=>"Jun","iulie"=>"Jul","august"=>"Aug","septembrie"=>"Sep",
		"octombrie"=>"Oct","noiembrie"=>"Nov","decembrie"=>"Dec");
	$result = "";
	$rss = fetch_rss( 'http://interfacelift.com/wallpaper_beta/rss/' );
	$items = array_slice($rss->items, 0, $num_items);
	foreach ( $rss->items as $item ) {
		$author = $item['author'];
		$link = $item['link'];
		$link2 = substr($link,0,strlen($link)-1);
		$id=str_replace("/","",substr($link,strrpos($link2,"/")));
		$title = $item['title'];
		$pubdateo = $item['pubdate'];
		$pubdate = substr($pubdateo,5,2)." ".array_search(substr($pubdateo,8,3),$lunile)." ".substr($pubdateo,12,4);
		$desc = $item['description'];
		$descr = "Descriere: ".strip_tags(substr($desc,strpos($desc,"<p><b>Desktop Wallpaper</b></p>")+31,strpos($desc,"<p><b>Resolutions",strpos($desc,"alt=\"")+5)-strpos($desc,"<p><b>Desktop Wallpaper</b></p>")-31))." ($author)";
		$path = substr($desc,strpos($desc,"src=\"")+5,strpos($desc,"\"",strpos($desc,"src=\"")+5)-strpos($desc,"src=\"")-5);
		$rez = substr($desc,strpos($desc,"<b>Resolutions:</b>")+19);
		$rez = "Rezoluţii: ".trim(str_replace("</p>","",$rez));
		$text = "<div><b>$title</b><br>Data: $pubdate</p><p><a href=$link><img src=".$path." hspace=5 border=0 align=right></a>".$descr."</p><p>".$rez."</p></div><br clear='all' />";
		$result .= "$text\n";
	}
	return $result;
}
?>

Mai multe informaţii pe situl WordPress.org la fetch_rss, respectiv wp_rss. Reţineţi că această a doua funcţie este mult, mult mai simplă ca utilizare, dar nu permite intervenţia exactă pe modul de afişare al informaţiilor (în schimb oferă o listă simplă a ultimelor intrări ale feed-ului specificat).


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (Neevaluat încă)
Loading...Loading...

0 comentarii


Lasă un răspuns

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