
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.

Nice post! Maybe I will find (or allready have found) a solution for this «Exec-php»-bug. I will test that and inform you when the new release is ready. Than you can switch to php again, like it should be.
Thanks, Janek, for your attention and your excellent work.
Hola, tengo una pregunta:
En los widgets de wordpress se pueden poner varios widgets de categorias en la barra lateral, en el blog estas categorias de widgets son estaticas, no se les puede hacer click, ok, eso es lo que quiero, entonces, si quiero poner 4 widgets de categorias con nombres diferentes en la barra lateral y dentro de cada uno de estos widgets crear categorias en la parte de crear categorias, pero no me permite identificar las categorias creadas dentro de cada widget, por lo que en el blog me sale en todos los widget lo mismo que sale en el primero o sea se repite, por lo que si un widget se llama Marcas y otro Carros, en los 2 widgets me saldrá lo mismo, no hay forma de decirle que tales categorias creadas van en 1 widget y otras en los 3 widget de categorias siguientes???, estoy que pierdo el cabello como Homero porque no puedo hacer algo tan sencillo que se hace en blogger acá en wordpress un supuesto mejor servicio completo que blogger.
Sabes algo al respecto???, no se si me he explicado bien, si no es asi te rogaria que me envies un mail para incluso graficartelo a ver si se me va el dolor de cabeza, estoy por cambiarme a wordpress porque me lo recomendaron pero si algo tan simple que se puede hacer el blogger y que no se puede hacer en wordpress dudo mucho en que me cambie, aunque hay cosas que me gustan de wordpress.
El problema es que, si wordpress te da opcion de poner varios widgets de categorias es poque debe de haber la forma de poner diferentes categorias creadas dentro de cada widget de categoria no es asi?
Poniendo como ejemplo tu blog: tienes un gadget de categoria y dentro de ella haz creado varias categorias ok, pero wordpress te da opcion de poner varios widgets de categoria, o sea no solo uno como lo tienes tu, sino varios, por lo que si tu categoria llamaria por poner un ejemplo Marcas y otro widget se llama Carros deberia de tener diferentes informaciones de categorias creadas en su interior, pero esto no pasa sino que se repite lo que está dentro de una en la otra tambien, saludos coordiales.
Disculpa que haya tardado tanto en contestarte, Abel, pero he estado muy ocupado con otras cosas. He leído tu comentario varias veces con toda la atención de la que he sido capaz, pero no te entiendo del todo.
En cualquier caso, es cierto que WordPress permite añadir a la barra lateral varias instancias del widget de categorías, pero en principio dicho widget no permite filtrar qué categorías aparecen en cada lista. Para eso necesitas un plugin especial.
La lista de categorías que aparece en mi blog no está realizado con el widget estándar, sino mediante código PHP que lllama a las funciones de WordPress.