WordPress y cron

WordPress tiene su particular manera de utilizar cron. Como no todos los alojamientos permiten programar tareas, WordPress tiene el script wp-cron.php que se ejecuta en cada carga de cualquier página y comprueba si hay cosas por hacer. Y llevo tiempo preguntándome si la llamada a ese script puede afectar innecesariamente al rendimiento. Esto es un blog pequeño, pero en uno con muchas visitas puede que sí que afectara de manera notable.

Hay complementos para WordPress como Cron View que ayudan a controlar las tareas pendientes. Sin embargo, como no me gusta abusar de plugins, me ha dado por aprovechar que mi alojamiento me permite añadir trabajos al cron. Total que:

  1. He deshabilitado la ejecución automática del script wp-cron.php añadiendo en wp-config.php la línea:

    define('DISABLE_WP_CRON', true);

  2. He añadido la siguiente tarea a cron:

    */15 *     *     *     *     wget -q -O /dev/null http://DOMINIO/wp-cron.php

De manera que cada quince minutos se ejecute el script y el resto del tiempo WordPress se esté quieto. Pero la cuestión es si esto realmente afectará para bien o para mal al funcionamiento. Así que si estos días empeora la página ya tengo un candidato a culpable. 😀

Fuente → WordPress – using a crontab for wp-cron [Savannah W-ITS]

Integrando compartir en Tuenti en WordPress

Esto parece ya el mes de integrar botones en WordPress. Si bien hace poco expliqué cómo integrar los de «me gusta» de Facebook y «tweet» de Twitter, hoy me he enterado nuevamente a través de Ayuda WordPress de que Tuenti también se ha subido al carro de los botones.

Los de Tuenti explican la integración de su botón en cualquier sitio en su página de desarrolladores. Para WordPress se puede añadir el siguiente código donde se quiera que aparezca el botón, dentro del archivo index.php —para el caso de la página principal— o single.php —para cada entrada por separado— de la plantilla empleada:

<a href="http://www.tuenti.com/share?url=<?php echo(rawurlencode(get_permalink())); ?>"
target="_blank" alt="Compartir en Tuenti" title="Compartir en Tuenti><img src="ruta-al-archivo-del-botón" />
</a>

OJO:

  • Según el estándar utilizado es posible que el uso de target="_blank" no sea muy correcto porque vaya en contra de la especificación, como pasa con XHTML 1.1 en cuyo caso habría que usar JavaScript o fastidiarse.
  • La función de PHP rawurlencode codifica la URL como Tuenti manda en sus instrucciones, aunque ellos se refieren a una en JavaScript.
  • La función de WordPress get_permalink devuelve el enlace a la entrada a la que el botón se va a referir.
  • Hay quien usa la imagen alojada directamente en Tuenti, pero como en las instrucciones mencionan que se aloje en el servidor propio —no son tontos estos— pues ya cada cual que haga lo que quiera.

PD: servidor no tiene Tuenti. No he podido comprobar si el mecanismo funciona exitosamente. 😛

Importar comentarios de Facebook a WordPress

Gracias al blog de Ayuda WordPress ayer descubrí un plugin que nos permite importar a las bitácoras que usan WordPress los comentarios que nos hayan dejado en Facebook. El invento se llama Facebook comments importer y es muy sencillo de configurar: se instala y como único parámetro de configuración necesita el identificador de donde se publiquen las entradas y sus correspondientes comentarios. Además no sólo es compatible con las típicas notas que se pueden importar desde el feed, sino que también además con aplicaciones de importación de sindicación como RSS Graffiti —que el propio autor confirma con un caso propio— y a lo mejor alguna más pienso yo.

Dicho identificador es la ristra de números que en el caso de cuando estoy viendo mi recién estrenada aplicación-página, por ejemplo, aparece en la barra de direcciones:

importar-comentarios-de-facebook-a-wordpress

en mi caso: 150965931584496. Pero […] (continuar leyendo)

Integrando «me gusta» y «tweet» en WordPress

Ayer estaba un poco hinchado de pelearme con Silverstripe a la par que me enteré del propio botón de Twitter para los píos. En estas que me dije: pues voy a complicarme la vida con otra cosa. Y me puse a tratar de integrarlo aquí, en WordPress. Porque añadirlo en sí no es complicado. Se pueden seguir los propios manuales de las páginas de las respectivas utilidades[Like Button de Facebook y Botón de Twittear de Twitter], o incluso hay plugins que las integran, pero lo complicado viene cuando nos gusta intentar contentar las recomendaciones del W3C.

Consejo: siempre viene bien respetar el tipo de documento, y muchas veces los problemas se arreglan eligiendo uno adecuado a nuestras necesidades en puesto del más estricto que haya.

Para Facebook se describe el procedimiento de crear una aplicación y añadir a la bitácora las líneas necesarias en este hilo del foro de desarrolladores [inglés]. Pero ojo que ahí describe el procedimiento utilizando XFBML tal cual, sin apaños para la validación. Quien quiera ser algo más correcto con los estándares tendrá que mirar también en este mensaje de un hilo de Seo Workers [inglés]. Aunque yo aconsejo también cambiar el doctype a uno que admita bien las meta-etiquetas de Open graph protocol:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

Para Twitter el asunto es más sencillo. El validador se vuelve a quejar porque hay parámetros que no entiende pero la solución es muy parecida a la que se adopta para Facebook: JavaScript. Y ya si en la página de fans de Facebook se quiere que aparezcan sólo determinados tweets entonces hay aplicaciones como Selective tweet status que sólo publicarán mensajes de Twitter en dicha página si acaban con el hashtag #fb.

Yo por ejemplo […] (continuar leyendo)

Cómo mostrar la fecha en minúsculas en WordPress

Con la utilización de administradores de contenidos hechos por extranjeros la gente de habla hispana se ha ido olvidando de parte de las reglas de nuestro idioma. En el caso de la fecha y WordPress esto se observa en cuanto elegimos mostrar la fecha en formato, por ejemplo, 1 de Enero de 2000, o cualquier otro formato que muestre el mes en palabras.

Esto realmente viene derivado de la función date de PHP que  imprime el mes con la primera letra en mayúscula, en caso de que se le indique que muestre el mes. Y este hecho de comenzar con mayúscula el mes en español está mal, como describen las reglas sobre la fecha del Diccionario panhispánico de dudas de la RAE. En inglés no sé si es que sí que estará bien así, pero todo tiene arreglo en esta vida.

La solución más fácil sería meterle como argumento de entrada a la función strtolower() de PHP la salida de la función que nos informa de la fecha, date() en este caso. Sin embargo al tratarse de WordPress se añade un problema más. La función que devuelve la fecha en la que fue escrita una entrada, the_time(), imprime ésta directamente, por lo que no vale meterle esa salida como argumento de entrada a la función strtolower. Pero hay una chapuza a esto: las hojas de estilo.

Si tiramos de hojas de estilo existe la propiedad text-transform que permite transformar el texto en cuestión a minúsculas, mayúsculas o sólo la primera letra a mayúsculas. Con lo cual aunque en HTML el mes estuviese escrito empezando por mayúsculas, la mayoría de navegadores, al menos los que son en modo gráfico, lo mostraría todo en mayúsculas. Hay varias formas de implementar esto, la más rápida sería por ejemplo:

<p style="text-transform:lowercase"><?php the_time('j \d\e F \d\e Y'); ?></p>

que devolvería por ejemplo: 1 de enero de 2000

Otra manera puede ser asignarle una clase al párrafo y ya en la hoja de estilos correspondiente indicarle la propiedad a la clase en cuestión. Es una chapucilla que no he sabido solventar con PHP, pero que quizás a alguien más que haya tenido la curiosidad y no haya caído en hacerlo con hojas de estilo le pueda ayudar también. 🙂

Encontrar enlaces rotos en WordPress

Hace un tiempo me di cuenta de una buena cantidad de enlaces rotos que tenía, a costa de las herramientas estas para webmaster de Google. Pero me decía las direcciones que no funcionaban, no así desde donde se las enlazaba —lo interesante para saber a qué entradas corresponde y corregirlas—. Pero hoy, buscando como añadir la típica imagen que usan webs como Wikipedia para enlazar sitios externos desde WordPress, di con un plugin llamado Broken Link Checker —también en el directorio de plugins—.

La instalación la describen en su página, es como la del resto de plugins. Por defecto lleva una configuración para comprobar los enlaces cada 72h, que se puede cambiar o incluso se puede desactivar el plugin y activarlo de cuando en cuando y ahorrar en recursos. Además de chivarnos los enlaces erróneos —válido también para imágenes que tengamos alojada en otro dominio—, ofrece la posibilidad de añadirle a los enlaces que fallan una clase CSS llamada broken_link, que por defecto añade un efecto tachado a dichos enlaces hasta que sean reparados.

Sin duda una buena utilidad, que luego a veces da rabia cuando nos encontramos con entradas en algunos blogs en las que la mitad de los enlaces fallan y dan la sensación de abandonados. 😀

Validar las galerías de WordPress 2.6 para XHTML

De cuando en cuando me da por probar el blog en el validador de W3C —manías de uno—, y esto de utilizar un DTD de XHTML 1.1, aunque no es necesario ponerse tan estricto para un blog, trae de cuando en cuando algún quebradero de cabeza con el tema de la validación. Sobre todo cuando el contenido es ubicado automáticamente, como hacen las galerías que por defecto permite crear WordPress 2.6.

Para la entrada anterior sobre la fama de las suecas, por ejemplo, usé una galería, y el resultado fue que luego validando me lanzaba un fallo bastante gordo, ni más ni menos que justo antes de donde va el código de las imágenes, dentro del body, había un par de etiquetas style para modelar la manera de ubicar las imágenes, cuando esas etiquetas debieran de aparecer en todo caso entre <head> y </head>.

Este es el error descrito por el validador:

document type does not allow element «style» here.

<style type='text/css'>

Estuve buscando solución al asunto, porque eso es algo que WordPress coloca de manera automática, y encontré un par de plugins pero que no me sirvieron entre que o yo no sabía acabar de ponerlos en marcha o que incluso empeoraban aún más la validación. Así que me armé de valor —porque en cuanto actualice WordPress se irá al traste lo que modifique— y le metí mano directamente al archivo «wp-includes/media.php» para hacer una chapuza en toda regla pero que funciona. :mrgreen:

[…] (continuar leyendo)