Primer elemento de un array con mootools

Esta es una pequeña entrada “recordatorio” (se dice que lo que se escribe se graba mejor en la memoria que lo que se lee) de como obtener el primer elemento de un Array si podemos trabajar con mootools.

Mootools extiende la clase Array de Javascript con unas cuantas funciones útiles… la más usada seguramente sea each, con la que podemos recorrer cada elemento del Array. Habitualmente, para recoger el primer elemento de un Array accediamos con la clásica forma:

var mis_divs = $$("div#elementos div.elemento");
var mi_div = mis_divs[0];

si usamos la función de mootools quedaría así:

var mis_divs = $$("div#elementos div.elemento");
var mi_div = mis_divs.pick();

Esta forma nos permite que asignaciones rápidas (y largas) queden más elegantes:

$$("div#elementos div.elemento").pick().setStyle("display","none");

Enlace a noticias con home y página de entradas estáticas

Cuando trabajamos con home y página de entradas estáticas el obtener la url de la página de noticias funciones como site_url o home_url. Para resolver el problema podemos utilizar la siguiente función:

/**
 * Recupera la url de la página de blog
 */
if(!function_exists('iuttu_get_blog_page_url')){
	function iuttu_get_blog_page_url(){
		return get_permalink(get_option('page_for_posts'));
	}
}

Shortcodes en widgets de texto

Un widget de texto es la solución para casi cualquier necesidad que tengamos en nuestro sidebar. Lamentablemente, no evalúa los shortcodes que escribamos en la caja de texto.

Para solucionarlo sólo debemos añadir la siguiente línea a nuestro fichero functions:

add_filter('widget_text', 'do_shortcode');

Script de calendario de Aeron Glemann compatible con IE9

Después de mucho tiempo de utilizar el fantástico script de calendario creado por Aeron Glemann (que funciona con Mootools), ha llegado Internet Explorer 9 y la revisión de una web en el mismo… y al comprobar el funcionamento de la misma, vemos que el javascript nos tira un error: SCRIPT5022: DOM Exception: INVALID_CHARACTER_ERR (5). Al parecer, IE9, cumple demasiado extrictamente los estandards, y al parecer mootools (versión 1.2.4) utiliza una forma de crear elementos que no gusta a IE9, por lo que lo único que tenemos que hacer es transformar las creaciones de elementos como esta:

  var test = new Element("div", {"id":"text"});

a la forma más lenta:

  var test = new Element("div");
  test.setAttribute("id", "text");

y ya funcionará…

Podéis descargaros el código de aquí

WordPress: Caché con Transients API

Es habitual utilizar la Options API para almacenar información de nuestros plugins, pero en ocasiones nos interesa además guardar información adicional de alta volatilidad. Transients API nos ofrece tres sencillos métodos para guardar valores en caché (inicialmente en base de datos).

Recientemente hemos desarrollado para uno de nuestros clientes un widget que, además de otras acciones, muestra las últimas entradas de un feed externo. Para minimizar los accesos hemos decidido utilizar la Transients API. El método widget sería similar a este:

function widget( $args, $instance ) {
	extract( $args, EXTR_SKIP );
 
	if ( false === ( $result = get_transient( $this->id ) ) ) {
		/*
		Código que genera el HTML del widget y lo guarda en la variable $result
		*/
		set_transient( $this->id, $result, 60*60*24 );
	}
	echo $result;
}

La función get_transient( $transient ) devuelve el valor almacenado con la clave $transient o falso si no existe. set_transient( $transient, $value, $expiration ) nos permite almacenar el valor $value en la clave $transient durante $expiration segundos (24h) en el ejemplo.

Podemos eliminar el valor almacenado en caché mediante la función delete_transient( $transient ), al actualizar las opciones del plugin por ejemplo:

function update($new_instance, $old_instance) {
	$instance = $old_instance;
 
	/*
	Código para actualizar la instancia del plugin
	*/
 
	delete_transient($this->id);
	return $instance;
}