Cargar widgets por defecto en WordPress

Publicado por el día 9 May, 2011 | 2 comentarios


Gestionar un blog es mucho más sencillo que gestionar una red de cientos de blogs.

Cuando trabajas con instalaciones de WordPress multisite con un gran número de blogs, te puedes ahorrar mucho tiempo, pero mucho, mucho, si haces que se activen, por defecto, todas las configuraciones genéricas, es decir, todo aquello que sea necesario tener activado y configurado en todos los blogs que vayas creando en tu red. De esta manera, crear un nuevo blog y dejarlo listo puede ser una cuestión de un minuto 😉

A continuación os mostramos qué hacer para que, al activarle el tema a tu blog de WordPress, automáticamente te cargue los widgets que quieras con tu propia configuración. En el código siguiente, a modo de ejemplo, dos widgets serán cargados automáticamente en el sidebar y otro en el footer:

La idea es sencilla. Cada vez que se guarda un widget, WordPress guarda dicha configuración en un array en un campo de la tabla wp_options. El código lo que hace es recuperar dicho array, aumentarle en uno el índice, guardarle la configuración deseada y volver a cargarlo en la base de datos. Es decir, si hubiera grabadas tres configuraciones del widget ‘Buscar’ en la BD, lo que hacemos es crear una cuarta, con la configuración que deseamos y activar esta última al sidebar.

//Se entrará en el 'if' en el momento después de activar el tema desde el panel de administración
if (isset($_GET['activated']) && is_admin()){
 
	//Código para la activación automática de widgets
	cargar_widgets_por_defecto();
}
 
//Función a la que llamamos cada vez que se active el tema, para que cargue los widgets por defecto
function cargar_widgets_por_defecto(){
 
//Nombre de las áreas de widgets donde activaremos los widgets por defecto
$add_to_sidebar = 'sidebar-widget-area';
$add_to_sidebar_footer = 'footer-widget-area';
 
//Nombre de los widgets que activaremos automáticamente
$widget_name_buscar = 'search';
$widget_name_categories = 'categories';
$widget_name_texto = 'text';
 
//Cargamos la configuración actual de los sidebars
$sidebar_options = wp_get_sidebars_widgets();
 
if(!isset($sidebar_options[$add_to_sidebar])){
$sidebar_options[$add_to_sidebar] = array('_multiwidget'=>1);
}
 
$widget_buscar = get_option('widget_'.$widget_name_buscar);
$widget_categories = get_option('widget_'.$widget_name_categories);
$widget_texto = get_option('widget_'.$widget_name_texto);
 
if(!is_array($widget_buscar)) $widget_buscar = array();
if(!is_array($widget_categories)) $widget_categories = array();
if(!is_array($widget_texto)) $widget_texto = array();
 
$count_buscar = count($widget_buscar)+1;
$count_categories = count($widget_categories)+1;
$count_texto = count($widget_texto)+1;
 
//**************************************************************************************
// Añade los widgets por defecto al sidebar
//**************************************************************************************
 
//Cargamos la configuración deseada del widget BUSCAR
$sidebar_options[$add_to_sidebar][] = $widget_name_buscar.'-'.$count_buscar;
$widget_buscar[$count_buscar] = array(
'title' => 'Buscar'
);
update_option('widget_'.$widget_name_buscar,$widget_buscar);
 
//Cargamos la configuración deseada del widget CATEGORÍAS
$sidebar_options[$add_to_sidebar][] = $widget_name_categories.'-'.$count_categories;
$widget_categories[$count_categories] = array(
'title' => 'Categorías',
'dropdown' => 0,
'count' => 1,
'hierarchical' => 0
);
update_option('widget_'.$widget_name_categories,$widget_categories);
 
//**************************************************************************************
// Añade los widgets por defecto al sidebar del FOOTER
//**************************************************************************************
 
//Cargamos la configuración deseada del widget de TEXTO
$sidebar_options[$add_to_sidebar_footer][] = $widget_name_texto.'-'.$count_texto;
$widget_texto[$count_texto] = array(
'title' => '',
'text' => 'Copyright © Mecus 2011',
'filter' => 0
);
update_option('widget_'.$widget_name_texto,$widget_texto);
 
//Actualizamos la configuración actual del los sidebars con los nuevos widgets
wp_set_sidebars_widgets($sidebar_options);
 
}


Sólo tienes que copiar y pegar el código en: ‘/wp-content/themes/nombre-de-tu-tema/functions.php’ y guardar los cambios. La próxima vez que actives dicho tema en tu blog, tendrás esos tres widgets activados sin tener que haber ido al menú de widgets en el panel de administración 🙂

Nota: No olvides que los nombres de los sidebars pueden variar en tu tema y que los widgets que deseas activar pueden tener diferentes campos que configurar.