Delirios de un Informático

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.

Un comentario en “Cómo añadir soporte para widgets y menús a tu tema de WordPress”

Nico dice:

Sumamente sencillo y útil, ¡muchas gracias por compartir!