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 ?>&hl=en&fs=1" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/<?php echo $youtubeid ?>&hl=en&fs=1" width="240" height="176">
<!--<![endif]-->
<p><a href="http://www.youtube.com/v/<?php echo $youtubeid ?>">Visualizza il video»</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.