Delirios de un Informático

Cómo usar Twitter Tools con la extensión OAuth de PECL

Un plugin para WordPress muy utilizado últimamente es Twitter Tools, del famoso Alex King. El problema es que si tienes el blog alojado en un servidor que disponga de la extensión OAuth de PECL te encontrarás con un bonito error al intentar conectar con Twitter:

Fatal error: Class 'OAuthSignatureMethod_HMAC_SHA1' not found

Se debe a que se comprueba de forma incorrecta la existencia de las clases necesarias, no incluyendo las necesarios en caso de que no existan. Como he leido cosas como que se recomienda solicitar que se deshabilite la extensión de PHP, he pensado que es mejor crear este pequeño plugin para WordPress que complemente la extensión PECL añadiendo lo necesario para que funcione correctamente Twitter Tools sin necesidad de deshabilitar la extensión ni hacer cosas extrañas. Para hacerlo funcionar, basta con subirlo al directorio wp-content/plugins y habilitarlo desde el panel de control como cualquier otro plugin.

Cómo añadir soporte para widgets y menús a tu tema de WordPress

Hace ya bastante que migré mi blog a WordPress desde mi viejo CMS basado en Bitacorae, pero la adaptación del tema la hice de forma muy básica, simplemente realizando una traducción de mis clases y funciones al API de WordPress. Pero ahora resulta útil gestionar la barra lateral y otras secciones fijas mediante los widgets y menús que proporciona WordPress. Para eso, es necesario crear el archivo functions.php en la raiz del tema con el siguiente contenido:

<?php

/**
 * Configuracion del tema
 */
function mytheme_setup()
	{
	// soporte para menu superior
	$params = array
		(
		'primary' => 'Principal',
		);
	
	register_nav_menus($params);

	// soporte para sidebar principal
	$params = array
		(
		'name'			=> 'Area principal',
		'id'			=> 'area-widgets-principal',
		'description'	=> 'Area princial de widgets',
		'before_widget' => '<div id="%1$s" class="widget %2$s">',
		'after_widget'	=> '<div class="clear"></div></div>',
		'before_title'	=> '<h3 class="titulo-widget">',
		'after_title'	=> '</h3>'
		);
	
	register_sidebar($params);

	// soporte para sidebar secundario
	$params = array
		(
		'name'			=> 'Area secundaria',
		'id'			=> 'area-widgets-secundaria',
		'description'	=> 'Area secundaria de widgets',
		'before_widget' => '<div id="%1$s" class="widget %2$s">',
		'after_widget'	=> '<div class="clear"></div></div>',
		'before_title'	=> '<h3 class="titulo-widget">',
		'after_title'	=> '</h3>'
		);
	
	register_sidebar($params);
	}

// configuracion del tema
add_action('after_setup_theme', 'mytheme_setup');

Pueden añadirse tantas áreas como se deseen, ya que tienen una especial utilidad (por lo menos para mí) para mostrar diferentes menús según en donde se encuentre el visitante. Yo he optado por generar dos áreas, una para la portada del blog y otra para las páginas interiores, ya que en estas últimas no es necesario mostrar todo el contenido que publico en Twitter/Flickr/Tumblr. Para añadir las áreas de widgets al sidebar, basta el siguiente código:

<?php dynamic_sidebar(is_home() ? 'area-widgets-principal' : 'area-widgets-secundaria'); ?>

El soporte para menús también es sencillo, basta añadir al archivo header.php (o donde proceda):

<?php wp_nav_menu(array('container_class'=>'menu-header', 'theme_location'=>'primary')); ?>

Una vez realizados estos cambios, se podrán gestionar los menús y los widgets desde la sección Apariencia del panel de WordPress.

Cómo eliminar “Publicado por WordMobi” en WordPress

WordMobi es un estupendo programa desarrollado en Python para móviles Symbian S60 que permite gestionar tu WordPress fácilmente, añadiendo y modificando entradas o comentarios. Pero tiene un problema, y es que añade al final de todos los posts el texto “Publicado por WordMobi“ que está bien para ganar popularidad pero que me parece abusivo el no poder desactivarlo. Por eso, he desarrollado esta pequeña función para eliminar esa frase:

/**
 * Elimina el "Publicado por Wordmobi"
 *
 * @param	string	$content
 * @return	string
 */
function fix_wordmobi($content)
	{
	$fix = 'Publicado por <a href="http://wordmobi.googlecode.com">Wordmobi</a>';

	$content = str_replace("<p>$fix</p>", '', $content);
	$content = str_replace("<br><br>$fix", '', $content);

	return $content;
	}

add_filter('the_content', 'fix_wordmobi');
add_filter('the_content_rss', 'fix_wordmobi');

Puede añadirse al código de cualquier plugin para que funcione….

The Definitive URL Sanitizer v0.4

Sí, otra versión en un día. Esta vez debe solucionar el problema de “The plugin does not have a valid header” en WordPress 2.8+. Se debía a que creaba una subcarpeta en la carpeta principal del plugin y fallaba la activación en instalaciones nuevas. Gracias axelitus por el aviso y a Mayoral por darme la murga para que actualizara, y disculpad la tardanza en solventar el problema, pero mis vacaciones me han tenido muy ocupado :P.