Javascript para programadores impacientes

JavaScript for impatient programmers — a pesar del título, explica con harto detalle incluso los aspectos más básicos del lenguaje. Está actualizado hasta ES 2019 por lo que es especialmente útil para refrescar cosas de sintaxis y nuevas funcionalidades que se han ido incorporando al lenguaje. El libro está prácticamente entero, sólo hay un par… Continue reading Javascript para programadores impacientes

Trabajar con fechas en MySQL

Trabajar con fechas es una tarea que al estar sujeta a tantas reglas especiales (meses con distinta cantidad de días, años bisiestos, comienzo de mes a media semana, etc) puede ser muy compleja si lo intentamos abordar sin el apoyo de una buena base. Anteriormente he escrito sobre cómo trabajar con fechas en PHP y… Continue reading Trabajar con fechas en MySQL

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… Continue reading Cargar imágenes de sitio remoto a través de proxy inverso con nginx

Recientemente necesitaba generar identificadores únicos, breves, que no fueran dependientes del contenido, y no aleatorios… si bien podrían haber sido simplemente números enteros, además quería que no fueran explícitamente secuenciales.

Finalmente me decidí por utilizar números en base 36, una técnica bastante utilizada por servicios para acortar URLs, como TinyURL y otros. La gracia de este sistema es que puede representar números grandes en una secuencia de letras y números; y se puede lograr tanto en PHP como en Javascript (además de un montón de otros lenguajes).

Una de las funciones más útiles de WordPress es get_post_meta( ), que nos permite obtener alguno de los metadatos asociados a una entrada.

Si deseamos obtener un metadato único, utilizamos get_post_meta( $post->ID, 'meta_key', true ), y si es múltiple, get_post_meta( $post->ID, 'meta_key', false), y aquí nos podemos topar un problema importante, ya que en algunas circunstancias el orden en que devuelve los resultados es aleatorio.

La razón de esto es que al ejecutar la función, WordPress carga la información de todos los metadatos asociados a la entrada en el caché de objetos, pero esta consulta no incluye un ORDER BY que permita determinar el orden, y aunque es posible especificar un orden predeterminado en una tabla, los datos de la tabla no permanecen en el mismo orden al actualizarla (por eso es que el orden es aleatorio)… esto es, si estás utilizando tablas MyISAM.

Sin embargo, existe un workaround para evitar este problema, ya que al utilizar tablas InnoDB, el orden en que se devuelven los resultados al hacer una consulta sin ORDER BY siempre es el mismo: de forma ascendente según su PRIMARY KEY.

O sea, si tienes este problema, te lo puedes ahorrar fácilmente con ALTER TABLE wp_postmeta ENGINE = InnoDB.

¡Ah! Por cierto, este problema ya está reportado como bug, y la solución (o sea, el ORDER BY) debiese venir incluído en WordPress 3.8; ¡yei!

Usando decoradores para extender WP_Post

La clase WP_Post recientemente introducida en WordPress 3.5 permite facilitar muchas tareas comunes en el desarrollo sobre este CMS, en particular el trabajo con campos personalizados almacenados en la tabla {$wpdb->prefix}postmeta. Sin embargo, la forma en que está implementada esta clase aparentemente pone una limitante importante, ya que al estar definida como final no puede ser… Continue reading Usando decoradores para extender WP_Post

Objetos de posts de WordPress y la clase WP_Post

Una de las novedades más interesantes para desarrolladores que trae WordPress 3.5 es que a partir de esta versión los objetos tipo “post” ya no son objetos estándares de PHP (stdClass) sino instancias de WP_Post. Por supuesto, este cambio está asociado a algunas ventajas inmediatas, relacionadas con una mejor performance y una optimización en que… Continue reading Objetos de posts de WordPress y la clase WP_Post

PHP ha cambiado profundamente durante su existencia, lo que nos motiva a actualizar nuestros hábitos al escribirlo y aprovechar sus nuevas funcionalidades en la implementación de buenas prácticas. PHP: The Right Way es una referencia rápida de buenas prácticas, estándares de código y enlaces a tutoriales actualizados en el manejo de este lenguaje… si desarrollas sobre WordPress, márcalo como lectura obligatoria.