Appunti WordPress

2 Aprile 2011

Altro post per tecnici anziani della serie “se le cose non me le scrivo da qualche parte poi le dimentico e perdo una vita a reinventare la ruota”.

Visualizzare gli ultimi video di un feed YouTube

Ne avevo già parlato in un vecchio post. A inizio anno ho ripreso in mano quel progetto e ho scoperto che la funzione fetch_rss() è obsoleta.
Niente di preoccupante, la nuova funzione si chiama fetch_feed() (pagina relativa sul Codex) e questo è un esempio di codice (oltre al video viene inserito anche il titolo).

< ?php
include_once(ABSPATH . WPINC . '/feed.php');

// $url = indirizzo del canale
$rss = fetch_feed($url);
if (!is_wp_error( $rss ) ) : 
	// Verifica se l'oggetto è stato creato correttamente	
	// Individua il numero di video presenti, al massimo leggine 3. 
	$maxitems = $rss->get_item_quantity(3);
    // Crea un array di tutti gli elementi (il primo elemento ha indice 0).
    $rss_items = $rss->get_items(0, $maxitems);
endif;
?>

<h3>Video</h3>
<ul>
< ?php if ($maxitems == 0) echo '<li>Nessun video disponibile';
else foreach ( $rss_items as $item ) : ?>
<li>
< ?php
$youtubeid = strchr($item->get_permalink(),'='); //elimina la parte finale dell'URL a partire da '='
$youtubeid = substr($youtubeid,1); //rimuovi il segno '=' per ottenere l'ID del video
$youtubetitle = $item->get_title();
//Inserisci il video
?>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="240" height="176">
<param name="movie" value="http://www.youtube.com/v/<?php echo $youtubeid ?>&amp;hl=en&amp;fs=1" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/<?php echo $youtubeid ?>&amp;hl=en&amp;fs=1" width="240" height="176">
<!--<![endif]-->
<p><a href="http://www.youtube.com/v/<?php echo $youtubeid ?>">Visualizza il video&raquo;</a></p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</param></object>
<span>< ?php echo $youtubetitle; ?></span>
</li>
< ?php endforeach; ?>
</ul>

Il risultato finale è visibile nella home page di questo sito.

Frequenza di aggiornamento dei feed

WordPress mantiene una cache dei feed e non è particolarmente rapido ad aggiornarla. Per modificare questa impostazione è possibile aggiungere questo codice al file functions.php, impostando il numero di secondi desiderato.


//Cache per aggiornamento feed impostata a 30 minuti
add_filter( 'wp_feed_cache_transient_lifetime', create_function('$a', 'return 1800;') );	

Blog multilingua

In questi giorni sto provando qTranslate per un nuovo sito e mi sembra decisamente ben fatto. È possibile inserire testi nel tema utilizzando questa struttura con _e() (per scrivere il testo) o __() (per passare il testo come argomento di una funzione)

<?php _e("<!--:en-->English Text<!--:--><!--:it-->Testo italiano - 404<!--:-->"); ?>

Ad esempio è possibile usare lo stesso codice per personalizzare le date

<span class="date"><?php the_time(__("<!--:en-->F j, Y<!--:--><!--:it-->j F y<!--:-->")) ?></span>

Se poi non vi piacciono le bandierine del widget, potete modificarle via CSS senza grossi patemi. Esempio:

.qtrans_language_chooser li a {
	display: block;
	height: 32px;
	padding-top: 6px;
}

.qtrans_flag_and_text {
	padding-left: 40px !important;
}

.qtrans_flag_it {
	background: url(images/italiano.png) no-repeat !important;
}

.qtrans_flag_en {
	background: url(images/inglese.png) no-repeat !important;
}

Non è possibile inserire nuovi commenti. I commenti vengono disattivati automaticamente dopo 60 giorni.