El 26 de noviembre pasado escribí un artículo sobre La magia de los widgets de WordPress (1), en el que analizaba la potencia de estos artilugios, especialmente cuando se combinan con las etiquetas condicionales de WordPress. No pretendía ser el primero de una serie de artículos, pero resulta que los widgets tienen algo de adictivo; son tan sencillos de poner en práctica, y tan potentes, que no es fácil resistirse a la tentación de ponerse a juguetear con ellos.

Sobre todo cuando los programadores crean plugins tan asombrosos como MyCustom Widgets, un complemento para WordPress que permite a los usuarios diseñar sus propios widgets para las barras laterales del blog. Con este plugin se pueden crear widgets en HTML, en PHP o en una mezcla de ambos códigos, y mediante el sistema de filtros que incorpora resulta trivial asignarlos a cualquier tipo de páginas del blog: entradas individuales, páginas estáticas, vistas por categoría, páginas de archivo o de búsqueda, etc. El plugin permite definir nuevos filtros a gusto de cada cual, con lo que ello supone en términos de potencia y flexibilidad de uso.

Tras instalar el plugin, he creado un widget condicional que hace lo siguiente: si una entrada pertenece a la categoría de Cine, se mostrarán en la barra lateral los enlaces de mi blogroll correspondientes a dicha categoría (un ejemplo); si pertenece a la categoría de Libros, se verán los enlaces sobre libros y literatura (otro ejemplo); finalmente, si la entrada pertenece a ambas categorías, se verán los dos conjuntos de enlaces (el tercer ejemplo). El código, que he conseguido afinar gracias a los buenos oficios de mi compañero Luismi Jaso (¡ay, cuánto echo de menos no saber PHP!), es el siguiente:

<div id="widget_para_cine_o_libros"><br />
<?php if (in_category(4) && ! in_category(12) )<br />
{ echo '<ul>';<br />
echo '<h3>Enlaces sobre cine</h3>';<br />
wp_list_bookmarks('title_li=0&categorize=0&category=4&before=<li>&after=</li>');<br />
echo '</ul>'; }<br />
elseif (in_category(12) && ! in_category(4) )<br />
{ echo '<ul>';<br />
echo '<h3>Enlaces sobre libros y literatura</h3>';<br />
wp_list_bookmarks('title_li=0&categorize=0&category=22&before=<li>&after=</li>');<br />
echo '</ul>'; }<br />
elseif (in_category(4) && in_category(12) )<br />
{ echo '<ul>';<br />
echo '<h3>Enlaces sobre cine</h3>';<br />
wp_list_bookmarks('title_li=0&categorize=0&category=4&before=<li>&after=</li>');<br />
echo '</ul>';<br />
echo '<ul>';<br />
echo '<h3>Enlaces sobre libros y literatura</h3>';<br />
wp_list_bookmarks('title_li=0&categorize=0&category=22&before=<li>&after=</li>');<br />
echo '</ul>'; }<br />
else { }<br />
?><br />
</div>

Una advertencia: el plugin MyCustom Widget muestra un curioso (y por otra parte predecible) comportamiento en presencia del Exec-PHP, también instalado en mi blog: a pesar de que el código del widget es una mezcla de PHP y HTML, en la pantalla de configuración del widget hay que escoger la opción HTML, tal como se muestra en la imagen que aparece bajo estas líneas, porque de otro módo el código no se interpreta correctamente.

Configuración de un widget de usuario en MyCustom Widgets