¿Cómo funcionan juntos register_sidebar() y get_sidebar()?
Descargo de responsabilidad: Soy completamente nuevo en WP.
Estoy usando el framework de tema Starkers HTML5. En el functions.php veo este código:
function starkers_widgets_init() {
// Área 1, ubicada en la parte superior de la barra lateral
register_sidebar( array(
'name' => __( 'Área de Widget Principal', 'starkers' ),
'id' => 'primary-widget-area',
'description' => __( 'El área de widget principal', 'starkers' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
// Área 3, ubicada en el pie de página. Vacía por defecto.
register_sidebar( array(
'name' => __( 'Primera Área de Widget del Pie de Página', 'starkers' ),
'id' => 'first-footer-widget-area',
'description' => __( 'La primera área de widget del pie de página', 'starkers' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h3>',
'after_title' => '</h3>',
) );
// ... más llamadas a register_sidebar() ...
}
Y en footer.php veo este código:
<?php get_sidebar( 'footer' ); ?>
No entiendo cómo get_sidebar() sabe cómo tomar ese argumento string y encontrar los widgets apropiados que fueron definidos por register_sidebar(). En el fragmento de functions.php que publiqué arriba, no hay ninguna mención de "footer" excepto en las propiedades name, id y description. Pero me parecería extraño que get_sidebar() busque 'footer' dentro de esas propiedades.
¿Tiene sentido lo que estoy preguntando? ¿Hay alguna pieza que falte?
Las razones por las que pregunto son: - Me gustaría saber más sobre la arquitectura de WP - Me gustaría poder definir un área de widget personalizada y saber cómo renderizarla en una página específica.
Muchas gracias.
Nunca me he molestado con get_sidebar(). En su lugar, simplemente uso dynamic_sidebar(). Lo llamarías así:
dynamic_sidebar('first-footer-widget-area');
Y eso se encarga de toda la barra lateral. No más inclusiones de archivos, no más carpetas de temas desordenadas. Si quiero tener 5 barras laterales diferentes, no agrega ningún archivo, solo funciones adicionales en functions.php.
En el caso de Starkers, sidebar-footer.php llama condicionalmente a dynamic_sidebar() para todas las áreas de widgets apropiadas.
User
Simplemente llamas a get_sidebar() desde index.php y este carga el archivo del tema sidebar.php.
Por otro lado, register_sidebar() se utiliza para widgets donde los plugins y similares quieren añadir contenido dinámicamente en tu archivo sidebar.php si tu tema lo soporta.
En tu caso, ¿existe un archivo llamado sidebar-footer.php en el directorio de tu tema?
get_sidebar('nombre') obtiene una plantilla de barra lateral con el nombre sidebar-nombre.php.
Dentro de sidebar-nombre.php, está el HTML para la barra lateral y una llamada a dynamic_sidebar('algún-nombre-ojalá-el-mismo'), que es donde irán los widgets.
register_sidebar(array(name=>'algún-nombre-ojalá-el-mismo', ...)) es lo que permite que dynamic_sidebar funcione.
Como puedes ver, get_sidebar(nombredelaplantilla) es para usar con plantillas de barras laterales. Si no las necesitas, puedes llamar directamente a dynamic_sidebar(nombredelabarra) desde tu tema.