Con todas las ventajas que traen las actualizaciones de WordPress, pues siempre hay alguna que nos hace modificar las plantillas (themes) a causa de que algunas funciones quedan obsoletas y son sustituídas por otras nuevas.

Desde hace poco, en un proyecto en el que participo, un feed directamente importando con PHP, daba avisos de warning bastante raros, estos errores directamente partían de funciones que de siempre ha funcionado, hasta que llegaron las actualizaciones. Acabas pasando y pasando, y toca renovar ;)

Warning: strpos() expects parameter 1 to be string, array given in [...]

Pues bien, tirando de Google, el error que me venía era de MagpieRSS and RSSCache que usan las librerías de WordPress. Como indica en el codex de  WordPress, la función fetch_rss (de donde salía el error directo) había sido sustituída por una nueva, fetch_feed.

Los cambios, como pueden verse, mejoran bastante el proceso de obtener el feed, dejando de depender de rss.php y desapareciendo los condicionales. Además, ya se muestra la fecha del feed con la función php, cosa que el anterior código de MagpieRSS complicaba bastante, o que muestre un mensaje cuando no existen feeds en el canal (está vacío y no hay nada que mostrar)

Por lo tanto, si el anterior código (con su loop incluido) era así:

<?php
include_once(ABSPATH.WPINC.'/rss.php'); // path to include script
$feed = fetch_rss('URL_FEED'); // specify feed url
$items = array_slice($feed->items, 0, 1); // specify first and last item
$hoy = date("j/m/Y");
?>
<?php if (!empty($items)) : ?>
<?php foreach ($items as $item) : ?>
(...)
<?php endforeach; ?>
<?php endif; ?>

La “nueva” versión queda de la siguiente forma:

<?php // Get RSS Feed(s)
include_once(ABSPATH . WPINC . '/rss.php');
$rss = fetch_rss('URL_FEED');
$maxitems = 5;
$items = array_slice($rss->items, 0, $maxitems);
?>

<?php if (empty($items)) echo '<li>No items</li>';
else
foreach ( $items as $item ) : ?>
(...)
<?php endforeach; ?>

Enlaces de ampliación: WP_RSS | fetch_rss – (Codex de WordPress)

Me encuentro actualmente en un proyecto que, aunque si es verdad que no tiene mucho contenido y mucho menos liarse con funciones complejas, necesita que se le ponga un poco al día por la cantidad de usuarios que entran en la web con iPad.

Y para quien todavía no lo sepa, iPad se lleva un poco mal con el flash, un recurso que se usa principalmente para elementos multimedia en webs. ¿Solución? HTML5 para mostrar todos estos videos y otros elementos que antes iban sobre flash.

Aunque va bastante lento este tema del HTML5, los navegadores libres más o menos ya van soportando estas características que ofrecen con las etiquetas de HTML5. Obviamente que nadie piense en Internet Explorer. Pues bien, encontré algo para parchear en javascript que “ayuda” a forzar las etiquetas HTML5 para que se muestren en estos navegadores.

El script se llama html5media (GitHub) y parece bastante sencillo su uso. Simplemente añadir en la sección de header el link al script y a correr. Obviamente no es ni un reproductor multimedia ni nada parecido. Para eso, hay otras cosas que nos pueden servir :D

<script src="html5media.min.js"></script>