it-swarm-es.com

¿Cómo funcionan juntos register_sidebar () y get_sidebar ()?

Descargo de responsabilidad: Soy una marca nueva en WP.

Estoy usando el tema del framework Starkers HTML5 . En el functions.php veo este código:

function starkers_widgets_init() {

  // Area 1, located at the top of the sidebar.
  register_sidebar( array(
    'name' => __( 'Primary Widget Area', 'starkers' ),
    'id' => 'primary-widget-area',
    'description' => __( 'The primary widget area', 'starkers' ),
    'before_widget' => '<li>',
    'after_widget' => '</li>',
    'before_title' => '<h3>',
    'after_title' => '</h3>',
  ) );

  // Area 3, located in the footer. Empty by default.
  register_sidebar( array(
    'name' => __( 'First Footer Widget Area', 'starkers' ),
    'id' => 'first-footer-widget-area',
    'description' => __( 'The first footer widget area', 'starkers' ),
    'before_widget' => '<li>',
    'after_widget' => '</li>',
    'before_title' => '<h3>',
    'after_title' => '</h3>',
  ) );

  // ... more calls to 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 de cadena y encontrar los widgets apropiados que fueron definidos por register_sidebar(). En el fragmento de funciones.php que publiqué arriba. No hay ninguna mención de "pie de página" a excepción de las propiedades name, id y description. Pero me parece extraño que get_sidebar() buscaría 'pie de página' dentro de esas propiedades.

¿Tiene sentido lo que estoy preguntando? ¿Hay alguna pieza que falta?

Los motivos por los que pregunto son porque, me gustaría saber más sobre la arquitectura WP, me gustaría poder definir un área de widgets personalizados y saber cómo representarlos en una página específica.

Gracias una tonelada.

7
jessegavin

Simplemente llame a get_sidebar() desde index.php y se cargará el archivo de tema sidebar.php.

register_sidebar() , por otro lado, se usa para widgets donde los complementos y similares desean agregar dinámicamente contenido en su archivo sidebar.php si su tema lo admite.

En su caso, ¿hay un archivo llamado sidebar-footer.php en el directorio de su tema?

9
john010117

Nunca me he molestado en get_sidebar(). En su lugar solo uso dynamic_sidebar(). Lo llamarías así:

dynamic_sidebar('first-footer-widget-area');

Y eso cuida 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.

7
John P Bloch

get_sidebar('name') obtiene una plantilla de barra lateral con el nombre sidebar-name.php.

Dentro de sidebar-name.php, hay un HTML para la barra lateral y una llamada a dynamic_sidebar('some-name-hopefully-the-same'), que es donde irán los widgets.

register_sidebar(array(name=>'some-name-hopefully-the-same', ...)) es lo que permite que dynamic_sidebar funcione.

Como puede ver, get_sidebar(templatename) es para usar con las plantillas de barra lateral. Si no los necesita, puede llamar a dynamic_sidebar(sidebarname) directamente desde su tema.

4
Gerard ONeill

get_sidebar('footer') intenta cargar sidebar-footer.php desde el tema activo. Starkers proporciona este archivo. Verifique starkers/sidebar-footer.php y las cosas deberían quedar claras.

3
Annika Backstrom