Terzo livello

Tutti a buttarsi sul social, e nessuno che si ricordi cosa vuol dire sociale.

Poniamo che vogliate recuperare da un vostro sito in PHP (non necessariamente in WordPress) titolo, permalink, riassunto e immagine di uno o più post di un vostro blog in WordPress.
Se la necessità fosse poi di impaginare questi elementi a piacimento nella vostra pagina del sito, non è una buona idea inserire l’immagine direttamente nei post del vostro blog, perché la posizione e lo stile dell’immagine sarebbe difficile da gestire in modo autonomo e l’immagine sarebbe visibile nel feed.
Una soluzione possibile è di distruibuire l’immagine in evidenza o la prima immagine disponibile come allegato (enclosure) del feed.
Questo il codice da inserire nel file functions.php del tema del vostro blog:

function ThumbRSS() {
global $post;
$first_img = "";
 
if (has_post_thumbnail($post->ID)) {
   $first_img=wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), array(150,150));
   $first_img=$first_img[0];
   $mime = get_post_mime_type(get_post_thumbnail_id($post->ID));
   $size = filesize(get_attached_file(get_post_thumbnail_id($post->ID)));
} 
 
else {
	$ai = get_posts(array( 
	 'post_type' => 'attachment', 
	 'numberposts' => 1, 
	 'post_status' => null, 
	 'post_parent' => $post->ID,
	 'post_mime_type' => 'image'
	 )); 
 
	if ($ai) {  
		 foreach ($ai as $attachment) {  
		   $first_img = wp_get_attachment_image_src($attachment->ID, array(150,150));
		   $first_img=$first_img[0];
		   $mime = get_post_mime_type($attachment->ID);
		   $size = filesize(get_attached_file($attachment->ID));
		 } 
	 } 
}
 
echo '<enclosure url="'.$first_img.'" length="'.$size.'" type="'.$mime.'" />';
}
 
add_filter('rss2_item', 'ThumbRSS');

Il codice per recuperare uno o più post nel vostro sito e l’immagine allegata è il seguente:

function get_post_from_rss($link,$items) {
$simple = simplexml_load_file($link);
for($i=0;$i< $items;$i+=1)  {
	$title = $simple->channel->item[$i]->title; 
	$description =  $simple->channel->item[$i]->description; 
	$content = $simple->channel->item[$i]->children("content", true); 
	$data = $simple->channel->item[$i]->pubDate = date("d-m-Y",strtotime((string)($simple->channel->item[$i]->pubDate)));
	$link = $simple->channel->item[$i]->link;
	$image = $simple->channel->item[$i]->enclosure->attributes()->url;
 
	//A questo punto restano da scrivere e gestire i dati come preferisco
}
}
 
get_post_from_rss('http://url_mioblog/feed/',1)
  • Twitter
  • del.icio.us
  • LinkedIn
  • Tumblr
  • email
  • PDF

Articoli correlati

Jesus saves. Buddha does incremental backups
Premessa: quello che sto per raccontare naturalmente è documentabile, e lo racconto soprattutto perché cose simili possono capitare e bisogna sempre...
Un trucco veloce: cosa fare se non si visualizza un template di pagina
Sono le cose più semplici quelle che possono far perdere molto tempo (e spesso inutilmente). In questo caso, può capitare che si crei un template di ...
Le API di Analytics in PHP senza specificare la dimensione
Sfruttare le API di Analytics non è complesso, e molti sono gli strumenti a disposizione. Tuttavia non sempre le guide sono chiarissime, e non sempre...
Un trucco per personalizzare la pagina di ricerca in WordPress
Una delle pagine che si possono personalizzare facilmente in WordPress è quella dei risultati della ricerca, aggiungendo al proprio tema una search.ph...

19/12/2011 | Wordpress
| | | | | | |

10 commenti

  1. marco scrive:

    adoro questo blog

  2. Maria Serena Piccioni scrive:

    Mi inchino con un lieve rossore :)

  3. Roberto scrive:

    annoto diligentemente :)
    grazie per la dritta

  4. Maria Serena Piccioni scrive:

    Dovere :)

  5. Gloria scrive:

    scusa l’ignoranza, ma le sto provando tutte e non me ne funziona una, sto diventando isterica!! :P
    Io inserisco il primo codice nel functions.php del mio tema e fin qui ci sono, il secondo codice dove lo dovrei inserire?
    Io ho fatto i feed con feed burner e vorrei inviare solamente il riassunto e l’immagine in evidenza o la prima immagine del post. Ho etto che ci sono anche dei plugin appositi, ma ccon l’ultima versione di WP non sono verificati.. Cosa consigli?
    Grazie in anticipo :)

  6. Maria Serena Piccioni scrive:

    Ciao Gloria, se non ho capito male, per quello che vuoi tu ti basta il codice che hai già inserito nel functions.php, per avere il solo riassunto nei feed vai in Impostazioni -> Impostazioni lettura e selezioni Per ciascun articolo in un feed, mostra: Riassunto. Il secondo codice serve quando hai un altro blog/sito e vuoi recuperare e impaginare il contenuto del tuo sito/blog.
    Per quanto riguarda i plugin non ne conosco, ma se il problema è la compatibilità con l’ultima versione magari tra poco chi ha sviluppato il plugin farà uscire l’aggiornamento, basta aspettare.

  7. Gloria scrive:

    Io l’ho fatto, ma la cosa strana è che non mi viene l’immagine, ma appare un link testuale che rimanda all’immagine! Che tra l’altro non è l’immagine del post, ma una miniatura creata da wp per l’anteprima sul sito!

  8. Maria Serena Piccioni scrive:

    Gloria, lo script fa proprio quello: inserisce la thumbnail dell’immagine, non l’immagine originale, e non la inserisce nel post (anche perché se hai inserito una immagine nel post, nel feed c’è già), ma come enclosure, allegato.

  9. Gloria scrive:

    Si che fosse la thumbnail l’avevo capito, ma intendevo che me la fa di un’aimmagine che non è quella che avevo impostato io, ma mi ero spiegata male.. E poi avevo capito male perchè pensavo non mi mettesse il link, ma l’immagine, visto che il problema dei miei feed è proprio quella di non avere l’immagine..Adesso cerco qualcosa, grazie e scusa per il tempo perso!

  10. Maria Serena Piccioni scrive:

    Figurati, ci mancherebbe, se riesco a trovare il tempo vedo di farci un post :)

Lascia un commento

*