La mejor manera de crear múltiples barras laterales

1 jul 2016, 09:17:10
Vistas: 19.1K
Votos: 6

Sé perfectamente cómo crear múltiples barras laterales. Pero creo que mi método no es la forma correcta de agregar múltiples barras laterales.

Así es como agrego múltiples barras laterales

Si simplemente quiero crear una barra lateral, uso el archivo sidebar.php. PERO si quiero usar otra barra lateral, tengo que crear otro archivo PHP como sidebar-new.php. Luego llamo a este archivo así:

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

¡Eso significa que si quiero crear 4 barras laterales, tengo que hacer 4 archivos PHP!

¡PERO he visto muchos temas (en el mercado de WordPress) que ofrecen muchas barras laterales pero contienen solo un archivo PHP para la barra lateral (sidebar.php)! ¿Cómo lo hacen? Aprendí sobre cómo hacer barras laterales en Google antes, pero en las búsquedas solo obtengo los resultados que estoy usando actualmente (crear múltiples archivos para múltiples barras laterales).

Entonces, ¿cómo puedo crear múltiples barras laterales sin hacer múltiples archivos PHP!!???

1
Comentarios

Yo consideraría crear una clase OOP para la barra lateral y luego llamar a la clase en lugar de usar get_sidebar. De esta manera, puedes pasar diferentes valores a la clase según sea necesario. Realmente no veo otra solución sin que se vuelva muy desordenado

Pieter Goosen Pieter Goosen
1 jul 2016 10:15:19
Todas las respuestas a la pregunta 3
13

Definir una nueva barra lateral en tu archivo functions.php

<?php

if ( function_exists('register_sidebar') ) {

   register_sidebar(array(
   'before_widget' => '<li id="%1$s" class="widget %2$s">',
   'after_widget' => '</li>',
   'before_title' => '<h2 class="widgettitle">',
   'after_title' => '</h2>'
   ));

}?>

Una vez que estas funciones están definidas, notarás que aparece una barra lateral adicional en el Escritorio de WordPress bajo la opción Apariencia > Widgets. Es aquí donde puedes arrastrar y soltar todos tus widgets en tus diferentes barras laterales.

<?php

if ( function_exists('register_sidebar') ) {

   register_sidebar(array(
   'name' => 'sidebar 1',
   'before_widget' => '<div id="%1$s" class="widget %2$s">',
   'after_widget' => '</div>',
   'before_title' => '<h2>',
   'after_title' => '</h2>'
    ));

   register_sidebar(array(
   'name' => 'footer sidebar 1',
   'before_widget' => '<div id="%1$s" class="widget %2$s">',
   'after_widget' => '</div>',
   'before_title' => '<h2>',
   'after_title' => '</h2>'
   ));

}?>

Añadir una nueva barra lateral a tu plantilla

Dentro de tu archivo sidebar.php, cambia la llamada a tu barra lateral existente para incluir el nombre que definiste previamente en el archivo functions.php.

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar 1') ) : ?>

   <h2>Artículos por mes</h2>
   <ul>
      <?php wp_get_archives('title_li=&type=monthly'); ?>
   </ul>
   <h2>Categorías</h2>
   <ul>
      <?php wp_list_categories('show_count=0&title_li='); ?>
   </ul>

<?php endif; ?>

Para añadir tu nueva barra lateral, puedes copiar el código anterior o simplemente copiar las siguientes líneas. Añade estas líneas donde quieras que aparezcan tus nuevos widgets. En este ejemplo, puedes ver por el nombre que estoy colocando la mía en el pie de página de mi sitio web. Como antes, no olvides especificar el nombre correcto de la barra lateral. En el código anterior, el HTML que aparece entre las sentencias PHP es lo que aparecerá cuando no haya widgets añadidos a tu barra lateral. Este código 'predeterminado' obviamente puede modificarse para adaptarse a tu tema. En el siguiente código, como no hay HTML adicional, no se mostrará nada a menos que se haya añadido un widget en la barra lateral dentro de tu Escritorio de WordPress.

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('footer sidebar 1') ) : ?>
<?php endif; ?>
1 jul 2016 11:43:55
Comentarios

¡Estoy un poco confundido aquí! Primero, ¿por qué no usaste id al registrar la barra lateral? ¿Y cómo llamo a la barra lateral en mi página de inicio? ¿Así? get_sidebar();!

Rishabh Rishabh
1 jul 2016 12:59:10

No se usa ID porque se llama a la barra lateral a través del área de widgets y puedes llamarla en la página de inicio simplemente usando el nombre del área de widgets en tu página de inicio.

Owais Alam Owais Alam
1 jul 2016 13:02:00

Pero ¿por qué no puedo ver ninguna barra lateral (que acabo de registrar) en Apariencia -> Widgets?

Rishabh Rishabh
1 jul 2016 13:07:05

¿Aplicaste el código anterior? Hay múltiples formas de agregar una barra lateral en tu archivo de tema.

Owais Alam Owais Alam
1 jul 2016 13:10:15

El primer código lo escribí en functions.php y el segundo código lo escribí en functions.php (y luego también en home.php) y el último código lo escribí en sidebar.php. ¿Qué más necesito hacer y dónde?

Rishabh Rishabh
1 jul 2016 13:16:54

¿Qué respuesta obtienes en tu área de administración?

Owais Alam Owais Alam
1 jul 2016 13:19:09

¡Ese código no tiene efecto en el área de administración! ¿Has probado este método?

Rishabh Rishabh
1 jul 2016 13:21:14

¡Una cosa más! Cuando puse el ID en la función del sidebar registrado, entonces empezó a aparecer en Apariencia -> Widgets

Rishabh Rishabh
1 jul 2016 13:23:00

tienes que crear un sidebar y poner el nombre del sidebar en la función y luego llamarlo a través del área de widgets. Sí, he creado este código y lo he usado en mi proyecto.

Owais Alam Owais Alam
1 jul 2016 13:41:11

¿Está claro cómo registrar una barra lateral en el widget y llamarla a través del área de widgets en tu página de inicio?

Owais Alam Owais Alam
1 jul 2016 13:42:44

¿Debería llamarla usando get_sidebar(); o de otra manera? Si hay otra forma de llamarla, muéstrame

Rishabh Rishabh
1 jul 2016 13:45:49

llamándola así y verifica el resultado <div class="third"> <?php if ( ! dynamic_sidebar('nombre de tu barra lateral')) : ?> <h2>Nombre de tu barra lateral</h2> <?php endif; ?> </div>

Owais Alam Owais Alam
1 jul 2016 13:50:01

¡No, no, no! Parece que lo estás entendiendo todo mal... ¿Me estás sugiriendo que llame con esta función get_sidebar();? Si es así, entonces llamará a ambas barras laterales al mismo tiempo. ¿Qué pasa si quisiera mostrar un widget en el pie de página y otro widget en el encabezado? Este caso no parece posible con tu código y esa era mi pregunta real.

Rishabh Rishabh
1 jul 2016 13:56:20
Mostrar los 8 comentarios restantes
4

Puedes diferenciar entre barras laterales dentro de sidebar.php. No sé cuál es tu propósito, pero supongamos que deseas diferentes barras laterales en publicaciones/páginas individuales y otras páginas.

En tu functions.php registrarías dos barras laterales con los IDs singular y default de la manera habitual con register_sidebar.

Luego en sidebar.php incluirías algo como:

if (is_singular) {dynamic_sidebar('singular');}
else {dynamic_sidebar('default');}

Por supuesto, hay muchas formas de variar esto. Puedes mostrar diferentes barras laterales dependiendo de la categoría o quizás ninguna barra lateral en una plantilla de página especial llamada 'una-columna'.

1 jul 2016 10:35:14
Comentarios

He probado tu solución y el resultado es como esperaba. ¡Solo muestra 1 barra lateral! Lo que realmente quería saber es una forma de agregar múltiples barras laterales en una página y en la ubicación de mi elección dentro de esa página.

Rishabh Rishabh
1 jul 2016 11:01:40

¿Te refieres a que quieres múltiples llamadas a get_sidebar desde index.php para tener barras laterales en diferentes lugares?

cjbj cjbj
1 jul 2016 11:06:00

Sí, porque si quiero mostrar 2 barras laterales diferentes, una en el pie de página y otra en cualquier otra ubicación, es decir, en el encabezado O ambas barras laterales en el pie de página en una sola página, ¿cómo lo haría?

Rishabh Rishabh
1 jul 2016 11:09:09

Correcto. Esto significa que necesitas pasar un fragmento de información desde index.php (el lugar de la llamada) a sidebar.php. Este es un problema complicado con múltiples soluciones. Puedes leer más sobre esto aquí: http://wordpress.stackexchange.com/questions/228223/check-if-partial-file-is-called-from-within-header-php-or-footer-php?lq=1

cjbj cjbj
1 jul 2016 11:18:42
1

Puedes crear múltiples barras laterales utilizando VC o el editor de WordPress mediante https://codecanyon.net/item/custom-sidebar-visual-editor-wordpress-plugin/17329853

31 ago 2017 21:38:21
Comentarios

Gracias por tu sugerencia, pero quería hacerlo por mi mismo. Es decir, sin ayuda de un plugin. Pero tu respuesta podría ser útil para futuros visitantes :)

Rishabh Rishabh
1 sept 2017 08:53:50