Seleccionar página

Diferencia entre get_sidebar y dynamic_sidebar – WordPress

por | Ene 28, 2016 | Wordpress

¿Cuál es la diferencia entre get_sidebar y dynamic_sidebar?

Diferencia entre get_sidebar y dynamic_sidebar

dynamic_sidebar($slug) es la función que se encarga de buscar que el sidebar $slug este registrado con la función register_sidebar( array( ‘id’ => $slug ) ) en el tema y montará y cargará dicho sidebar con los widgets asignados y en el orden correcto. Si queremos mostrar el sidebar en una página podemos hacer la llamada a dynamic_sidebar() dentro de la página o crear un archivo distinto y utilizar en la página get_sidebar() para mostrarlo.

get_sidebar() no es una función necesaria para crear sidebars. get_sidebar(«misidebar»)  se utiliza para cargar un template o archivo tipo sidebar previamente creado. Por ejemplo si tenemos el archivo sidebar-misidebar.php en nuestro tema,  get_sidebar(«misidebar»)  llamará a este archivo y lo mostrará por pantalla. 

 

Para trabajar con sidebars solo se necesitan las funciones de registro y creación: register_sidebar y dynamic_sidebar. 

Puesto que dynamic_sidebar es capaz de mostrar el sidebar registrado y activo, la aportación de get_sidebar() no es obligatoria. A pesar de esto la convención para trabajar en WP con barras laterales es separar el sidebar en distintos archivos. Para que lo entiendas mejor piensa en como trabaja wordpress con las cabeceras de páginas y el pie. En la carpeta de nuestro tema WordPress, encontramos archivos distintos: header.php, footer.php que luego se visualizan en cada página con una llamada get_header(). 

Conociendo esta dinámica de trabajo lo más acertado es trabajar separando cada sidebar en un archivo distinto y luego llamar a cada archivo con get_sidebar.

Vamos a ver las diferencias de trabajar de una u otra manera:

Trabajando con dynamic_sidebar() en cada página donde queramos ver el sidebar

Para que dynamic_sidebar funcione el sidebar al que llama debe estar registrado. Por ejemplo si se utiliza dymamic_sidebar(‘2’), dentro del tema encontraremos algo similar al siguiente código:

<?php register_sidebar( array( 
'name' => __( 'Sidebar tienda', 'theme_text_domain' ), 
'id' => 'tienda', 
'description' => '', 
'class' => '', 
'before_widget' => '<li id="%1$s" class="widget %2$s">', 'after_widget' => '</li>', 
'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>' )); ?>

Para mostrar el sidebar deberemos ir a cada página de nuestro tema y añadir el siguiente código de ejemplo. Este código se encarga de comprobar que el sidebar está activo, es decir tiene widgets y si es así comprueba si está registrado y lo monta con el html necesario.

<?php if ( is_active_sidebar( 'tienda' ) ) : ?> 
<ul id="sidebar"> <?php dynamic_sidebar( 'tienda' ); ?> 
</ul> <?php endif; ?>

Hemos utilizado is_active_sidebar() antes de la carga para comprobar su estado pero no es necesario, puedes llamar al sidebar directamente:

<ul id="sidebar">
	<?php dynamic_sidebar( 'tienda' ); ?>
</ul>

Más información:

https://codex.wordpress.org/Function_Reference/dynamic_sidebar

Ver funcionamiento get_sidebar()

get_sidebar() nos ofrece una manera distinta para trabajar con las barras laterales. Es la forma más correcta de trabajar.

get_sidebar() es una función cuyo cometido es cargar una plantilla o archivo.php. El nombre de esta plantilla o archivo necesariamente tiene que empezar con la palabra: sidebar. Por ejemplo sidebar-blog.php.

get_sidebar no es capaz de cargar y montar el sidebar. Por lo tanto el archivo tiene que tener la llamada a dynamic_sidebar.

Aquí te muestro un ejemplo de un archivo o plantilla para un sidebar llamado tienda. Este archivo está guardado en la carpeta del tema con el nombre ‘sidebar-tienda.php’:

<?php if ( is_active_sidebar( 'sidebar-tienda' ) ) : ?> 
<div id="sidebar"> 
     <?php dynamic_sidebar( 'sidebar-tienda' ); ?> 
</div> <!-- end #sidebar --><?php endif; ?>

Siguiendo el ejemplo para visualizar este archivo en alguna zona de nuestra página, escribiríamos lo siguiente:

<?php get_sidebar( 'tienda' ); ?>

La función get_sidebar($name) busca en la carpeta de tu tema un archivo que se llame: sidebar-$name.php en nuestro ejemplo buscará sidebar-tienda.php

Si empleas la función get_sidebar(); sin el parámetro nombre por defecto cargará el archivo sidebar.php incluido en la mayoría de los temas WP que implementa la barra lateral por defecto.

Más información:

https://developer.wordpress.org/reference/functions/get_sidebar/

Ahora ya entiendes diferencia entre get_sidebar y dynamic_sidebar. Ha llegado el momento de añadir nuevas barras laterales con widgets a tu tema. En este artículo te explico como crear barras laterales sidebars en WordPress.

Cómo crear barras laterales sidebars en WordPress

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *