widgetizar

Recientemente noesh cambio de template, por si no se habian dado cuenta. Gracias a la flexibilidad de wordpress, cambiar de template es bastante facil.

Pero aqui hubo un problemita que consta de dos partes: La primera es, que al cambiar, se perdio mucho del codigo que noesh habia agregado manualmente y la segunda esque el nuevo template usa widgets. Cuando se estan usando los widgets de wordpress todo el codigo que esta puesto manualmente – por lo regular en el archivo ‘sidebar’ del template – es ignorado.

Para poder usar todo ese codigo existente hay varias formas de poderlo hacer:

  1. 1. Copiar el codigo XHTML del template viejo al nuevo.
  2. 2. Buscar versiones nuevas de los plugins e instalarlas para agregar esas funciones ya como un widget.
  3. 3. Crear widgets nuevos en base a los plugins existentes, modificando el codigo del plugin para “widgetizarlo
  4. 4. Usar el codigo viejo a manera de widget usando algun plugin/script adicional.

Todas tienen sus beneficios y sus contras. En mi caso me fui por la ultima opcion para terminar rapido, por que no se gran cosa de PHP ni como hacer plugins/widgets para wordpress y ahorita tampoco estoy como para ponerme a aprender a hacerlo.

Ya con todo esto decidido, me puse a buscar algun plugin que me permitiera hacer lo que tenia en mente. Despues de buscar un rato, di coneste plugin, que agarra cualquier archivo PHP en el directorio del template y permite agregar funciones adicionales como un widget en la pantalla de configuracion.

Segundo paso fue hacer un archivo PHP en el cual puse un fragmento de codigo. En el caso de noesh, es una llamada para el AJAX shoutbox que originalmente estaba en el codigo del template:
< ?php jal_get_shoutbox(); ?>

En el caso de ruidoz, es una llamada para el script de frases.

Para que esto funcione, se tiene que crear un archivo que comience con ‘widget_’ o ‘widget-‘. Hay que subirlo al servidor y guardarlo en el directorio del template que esta activo; si se mete en cualquier otro directorio no va a funcionar. Despues hay que activar la cantidad necesaria de ‘theme widgets’ en la pantalla de configuracion de widgets. Leer las instrucciones del plugin para mas detalles.

Con esos pasos todos esos plugins que habia que llamar manualmente desde el codigo del template pueden quedar como theme widgets sin estar jugando con codigo. Ayuda mucho con templates a los que el codigo para widgets les fue puesto despues de su creacion y para plugins que aun no son actualizados con funciones de widget.

Esto es util para PHP… pero que hay que hacer cuando se tiene un fragmento de XHTML? En lugar de agegar el fragmento al codigo en si nada mas hay que ponerlo en un widget de texto; bastante practico para cosas que solo son un fragmento de codigo como los flickr badges. Para cosas asi no hace falta el plugin de theme widgets, la funcion ya esta incluida con el plugin de widgets. Por ejemplo, el codigo del badge de noesh quedo asi:
HTML Fragment.

El total de tiempo que inverti en esta solucion? Mas o menos hora y media, lo cual – para el esfuerzo – es bastante bueno. Ademas es una opcion que permite cambiar de template con mas facilidad, puesto que ya no hay que agregar y eliminar codigo del template manualmente. Lo unico que se tendria que hacer es mover los archivos ‘widget_’ o ‘widget-‘ al template nuevo y reactivarlos en la pantalla de configuracion.

Esto es mas que nada una solucion temporal, pero en lo que todos los plugins que agregan contenido a la pagina final sean actualizados, es algo para evitar dolores de cabeza.