Mantener CSS compilado fuera de tu repositorio git al usar LESS/SASS con Grunt y hooks

Ten un repositorio git ordenado y liviano al excluir los CSS compilados y regenerarlos automáticamente con Grunt y hooks de git.

Una de las desventajas de trabajar con pre-procesadores (ya sea LESS, SASS u otros) es que los archivos producidos pueden generar mucho ruido en el historial de versiones de tu proyecto, lo que es especialmente crítico si estás compilando a archivos minificados o a varias cascadas a partir de un set de variables.

Por ejemplo, si cambias una variable que define un color utilizado en muchos lugares, tu historial mostrará no solamente ese cambio sino también todas las líneas del CSS donde cambió ese valor. Luego, al revisar cambios anteriores se hace mucho más difícil poder determinar fácilmente cuáles son cambios son relevantes (el cambio en el archivo fuente LESS/SASS) de los que no (todas las líneas modificadas en el CSS resultante).

Por ello, una práctica recomendada es versionar los archivos LESS/SASS pero no el CSS resultante, ya que estos últimos son solamente el producto del proceso de compilación de las fuentes.

Para que tu CSS refleje fielmente los cambios en LESS/SASS, puedes automatizar la compilación con una mezcla de tareas en Grunt y hooks de git.

Continue reading “Mantener CSS compilado fuera de tu repositorio git al usar LESS/SASS con Grunt y hooks”

Importar tu base de datos de WordPress (de la forma más rápida)

Uno de los grandes aprendizajes que he podido aplicar al desarrollo de sitios con WordPress, y del cual soy particularmente entusiasta de sermonear es la necesidad de mantener una versión local de desarrollo lo más parecida posible a lo que vas a utilizar en producción, lo que además se apoya y soporta un montón de otras buenas prácticas como evitar el cowboy coding, utilizar control de versiones, etc.

Puesto que para el cliente no se trata de uno de los objetivos del proyecto, la capacidad de importar una base de datos para tener una réplica de desarrollo debe ser algo sencillo y rápido de ejecutar. Aunque existen múltiples plugins y herramientas para hacerlo, para mí la forma más sencilla es recurrir a herramientas muy básicas a través de la línea de comandos.

Continue reading “Importar tu base de datos de WordPress (de la forma más rápida)”

Cargar imágenes de sitio remoto a través de proxy inverso con nginx

Independiente del proyecto, CMS o framework sobre el que estés trabajando, contar con una copia local de desarrollo es fundamental.

Aunque replicar configuraciones y bases de datos es algo relativamente sencillo, para proyectos de mediana o gran envergadura se hace especialmente complejo contar con todas las imágenes y archivos subidos por usuarios, por lo que es necesario recurrir a otras alternativas para lograr una réplica útil.

Por supuesto, una alternativa es simplemente realizar una copia mediante rsync u otro mecanismo, pero la librería de imágenes de un sitio grande puede llegar a pesar varias decenas de gigas; por eso la opción de acceder a estos archivos por un proxy resulta muy conveniente y práctica.

Ejemplos de configuración para WordPress

En primer lugar tienes que verificar que nginx tiene el soporte para el módulo de proxy, lo que puedes chequear ejecutando nginx -V desde la consola. Si estás usando la versión que viene en los repositorios de Ubuntu, deberías tenerlo.

Ahora lo más sencillo, para el caso de un sitio único (sin multisite).

https://gist.github.com/felipelavinz/9776262

Y algo más complejo, para multisitio con subdominios:

https://gist.github.com/felipelavinz/9776360

Otro escenario de uso muy útil es para réplicas de sitios que se utilizan como QA.

Vale la pena indicar que lo mismo se puede conseguir con otros servidores web; por ejemplo con Apache. Lighttpd también tiene un módulo de proxy, por lo que también se debería poder.

AJAX y WordPress, de la manera correcta

Hay múltiples formas de implementar interacciones en AJAX con WordPress… muchas son malas, otras son horribles, algunas profundamente aberrantes y unas pocas son correctas.

En el grupo de las malas, horribles y aberrantes, encontramos todos aquellos métodos que tienen que ver con intentar hacer las cosas de algún modo ingenioso, y no aprovechando las funcionalidades propias de WordPress, por ejemplo: enviando una petición a un archivo en la carpeta de un plugin o tema o capturando parámetros al descubierto.

Los métodos correctos, por otra parte, se integran armoniosamente con WordPress y permiten utilizar sus características propias para facilitar el desarrollo y el funcionamiento de estas interacciones. En este sentido, probablemente la mejor forma de implementar peticiones AJAX es a través de /wp-admin/admin-ajax.php, ya que esto presenta varias ventajas:

Continue reading “AJAX y WordPress, de la manera correcta”

Usa parámetros variables en tus funciones con wp_parse_args (WordPress Tips)

wp_parse_args() es una función de WordPress que otorga un patrón para manejar una cantidad variable de parámetros y opciones predeterminadas

wp_parse_args() es una función de WordPress que nos permite contar con tres interesantes beneficios al escribir una función:

  • poder aceptar una cantidad variable de argumentos, sin importar el orden en que estén declarados y además con la posibilidad de aumentar los argumentos que la función recibe sin tener problemas de compatibilidad
  • aceptar argumentos como una cadena de consulta(query string)o como array
  • poder dotar de opciones predeterminadas para cada uno de los argumentos de la función, de modo que la mayoría de las veces sólo debamos indicar un par de variaciones para utilizarla efectivamente

Según el Codex: se usa a través de WordPress para evitar tener que preocuparse sobre la lógica de las opciones predeterminadas y los inputs, y produce un patrón estable para pasar argumentos.

Aprovecharlo en tus funciones es muy sencillo. Veamos algunos ejemplos.

Continue reading “Usa parámetros variables en tus funciones con wp_parse_args (WordPress Tips)”

WordPress Tips: Utiliza el parámetro action para determinar la acción que estás realizando

Comienzo de una serie de entradas sobre buenas prácticas, tips, trucos y/o consejos para desarrollar de forma más eficiente sobre WordPress. En esta entrega:

Si bien es cierto que WordPress es un entorno de desarrollo bastante flexible, también lo es el hecho de que conocer más acerca de su funcionamiento te puede ayudar bastante a agilizar tus procesos, mejorar la integración con el sistema y la interacción con otros plugins, y en definitiva a desarrollar de forma más eficiente para WordPress.

Hace algún rato que quería presentar algunos de los trucos o buenas prácticas que he ido descubriendo o aprendiendo al desarrollar temas y/o plugins para WordPress; no espero despertar grandes revelaciones sino poner en discusión nuestras formas de trabajo diarias sobre este sistema.

Comencemos por algo sencillo, casi cosmético… Es algo que primero noté en la misma interfaz de administración de WordPress y que luego de empezar a utilizar en mis propios desarrollos me ha demostrado ser muy valioso: al enviar solicitudes al servidor, siempre utiliza la variable action para determinar la acción que estás realizando.

Continue reading “WordPress Tips: Utiliza el parámetro action para determinar la acción que estás realizando”