Crear Widgets en cualquier lugar mediante Sidebars WordPress
15 Mar 2013
Contexto
WordPress utiliza las sidebars definidas por el tema actual como contenedor de widgets. Habitualmente estas sidebars suelen encontrarse a la derecha o a la izquierda del content. En ocasiones nos puede interesar definir sidebars en otras zonas del theme.
Problema
Pongamos por ejemplo que queremos configurar un widget en el header de nuestro theme, donde pondremos en este caso concreto el selector de idioma.
Solución
Primero de todo necesitamos definir una sidebar en el fichero functions.php de nuestro tema. Utilizaremos la funcion de WordPress register_sidebar. Para hacerlo puedes copiar y pegar el siguiente trozo de código:
<?php //We hook our action on widgets_init add_action( 'widgets_init' , 'jplana_widgets_init' ); function jplana_widgets_init(){ $args = array ( 'name' => 'Header Widget Zone' , 'id' => 'header-widget-zone' , 'description' => '' , 'before_widget' => '<div>' , 'after_widget' => '</div>' , 'before_title' => '<h2>' , 'after_title' => '</h2>' ); register_sidebar( $args ); } ?> |
Una vez definida la nueva sidebar deberiamos ser capaces de verla en el backend de administración. Puedes encontrarla en Apariencia > Widgets.
Añadimos y configuramos los widgets que nos interese enseñar en la nueva zona.
El siguiente paso es añadir al tema una llamada para que nos muestre los widgets que hemos configurado previamente. Para tal fin usaremos la función de WordPress dynamic_sidebar. En el caso del ejemplo abrimos nuestro fichero header.php y copiamos el siguiente trozo de código:
1
|
<?php if ( ! dynamic_sidebar( 'header-widget-zone' ) ) {} ?> |
Ahora deberiamos ver en nuestro frontend los widgets asociados a la nueva sidebar.