Diferentes «sidebar» en páginas de WordPress

Cuando se navega por mi bitácora se puede notar que al ingresar en las páginas del «Área Técnica» o el «Área Literaria», por poner esos ejemplos, la sección lateral derecha de la bitácora muestra elementos diferentes. La «Foto al azar» desaparece, al igual que la pizarra de mensajes y se muestra solamente el menú de las páginas referidas al tema del área, exclusivamente. Voy a ilustrar el método que empleo para lograr esos efectos. Debo aclarar, de antemano, que éste es tan sólo una forma de llevar a cabo la tarea. No dudo que puedan existir otros procedimientos e incluso más efectivos o expeditos. Aunque voy a mostrar cómo tener diferentes sidebar por página, ello también es posible por categoría, autor, etc,. Utilizar la lógica de éste método y la documentación de WordPress para abordar otras condiciones diferentes a páginas.

Para muestra, un botón.

La manera en que voy a abordar el asunto es con el ejemplo de las áreas o secciones de ExtempForaneo. Tomaremos el Área Literaria. Queremos desplegar una página que elimine todo el contenido que se muestra en la sidebar en la página inicial de la bitácora. También deseamos que muestre solamente un menú de los artículos contenidos en dicha área y no más. Voy a partir del supuesto que el lector sabe cómo hacer una página. Pero, si deseamos crear una página con atributos específicos, podemos emplear la potencia de WordPress para ello.

    1. Copiamos el archivo page.php y le asignamos un nuevo nombre, por ejemplo literario.php.
    2. Abrimos el archivo nuevo (literario.php) y asignamos un nombre de plantilla en el encabezado: 

    <?php /* Template Name: Literario */ ?>
    

    De esta manera, nuestra plantilla será reconocida como nueva por WordPress.

    3. Efectuamos los cambios que deseamos en la plantilla. Esto puede significar, eliminar elementos no desados. En este caso, queremos llamar a una «sidebar» diferente, específicamente diseñada para el Área Literaria, por consiguiente eliminamos o comentamos la función 

    <?php get_sidebar(); ?>
    4. Vamos al menú «Escribir página» y colocamos el título de lo que será el artículo de entrada a la sección. La llenamos con el contenido que deseamos y antes de guardar vamos a los paneles laterales y seleccionamos Plantilla de la página. Se nos mostrarán las plantillas que hemos creado. Escogemos, siguiendo nuestro ejemplo, «Literario». Guardamos y chequeamos en la sección «Gestionar -> Páginas» el número ID que le fue asignado (lo vamos a usar más adelante).
    5. Creamos un archivo para la sidebar del área literaria. Yo le coloqué el nombre de sidebar-lit.php. En este archivo vamos a colocar las funciones que queremos se desplieguen en la sección lateral de las páginas basadas en la plantilla literaria. En mi caso, lo único que yo quiero es un menú con los artículos (páginas subordinadas) del área en cuestión. De ahí que sólo agrego la función: 

    <?php wp_list_pages('title_li=<h2>>._Sección Literaria</h2> '); ?>

    Con esta llamada, wordpress lista todas las páginas descendientes de aquella cuyo ID es el número «51», es decir, en el ejemplo que vemos, la sección literaria. Nótese el título que coloqué en el paréntesis.

    6. Ahora sólo nos queda llamar a nuestra nueva sidebar desde la plantilla Literario. Para ello, abrimos el archivo «literario.php» e incluímos la siguiente llamada, en el mismo lugar donde se encontraba la función de get_sidebar(): 

    <?php include ('sidebar-lit.php'); ?>

    De esta manera, cada vez que se llama a una página basada en la plantilla Literario se cargará la sidebar adaptada a esa sección, página, etc,.

    7. Siempre que nos dispongamos a escribir un artículo-página, que pertenece al área literaria (por ejemplo) seguimos los siguientes pasos: Vamos a «Escribir -> Página» ; luego seleccionamos, en los botones de la barra lateral, «Página superior» -> «Titulo de la primera página basada en la plantilla Literario». A continuación escogemos, en los mismos botones de la barra lateral, «Plantilla de la página» -> «Nombre de la plantilla (nuevamente, en nuestro ejemplo, Literario)».

Espero que los pasos sean de utilidad para aquellos que desean algo similar a lo que hago con mis secciones. Disculpar cualquier errorcillo que se me pueda haber pasado, estoy un poco cansado y veo doble … :s

26 comentarios

  1. Muy buena la explicacion…

    A la nueva barra lateral le coloque esto:

    Area Tecnica’ ); ?>

    Y funciona muy bien…

    Una pregunta, Al seguir colocando paginas dentro de esta area, como haces para que la seccion de Paginas de la barra lateral en la pagina principal liste solo las paginas padres y nos las hijas o subdivisiones?

    Por cierto, este sitio si que esta ‘too cool for IE’, jeje…

  2. Lo que le coloque no aparece bien aqui… Deberia colocarlo como comentarios o algo asi no?

  3. Para que las páginas, anidadas en otras, no aparezcan en el listado de la barra lateral, debes usar esta función:

    < ?php wp_list_pages('depth=1&title_li='); ?>

    De esta forma, le estamos diciendo que efectúe un listado de las páginas, pero sólo las principales. El parámetro depth determina la profundidad de los niveles a ser mostrados. Como puedes ver, tengo un valor de «1», es decir, no mostrar más allá de las páginas principales. Un valor «0» despliega todas las páginas y sus descendientes.

  4. Pefecto Emilio, no lo he probado pues he estado estudiando para un examen pero acabo de llegar y apenas termine unos cosas lo hago…

    Has visto los nuevos articulos de mi pagina? que te parecen?

    Un saludo…

  5. Hola Emilio,

    A ver si me puedes echar un cable.
    Si entras en la web que te pongo, verás una página que pone «prueba». Si entras en ella, verás que conseguí quitar todo de la sidebar y solo puse lo que me interesa. El listádo de páginas.

    Lo que me pasa es que se me aparece un punto gris que no se cómo quitarlo.
    Te escribo lo que tengo en el archivo sidebar2.php que equivale a tu sidebar-lit.php:

    ‘); ?>

    Solo eso. Creo que la primera línea es para que me la haga según la hoja de estilo, vamos digo yo…no se nada de php.

    Muchas gracias de antemano

  6. Algo ha pasado con la codificación y no ha salido el contenido del archivo sidebar2.php

    A ver ahora:

    ‘); ?>

  7. Tampoco. La última vez

    ‘); ?>

  8. Estimado jmlp:

    Tengo mucho tiempo sin escribir y sin mantener el blog, así que estoy anquilosado y sin la memoria fresca respecto al PHP, WordPress y demás. El «bullet» que te aparece indica que hay una etiqueta de listado < li> abierta, es decir, que no presenta cierre < /li>. Es probable, que al elaborar el archivo sidebar2.php hayas colocado la línea, tal como yo señalo aquí, pero (culpa mía por no haberlo incorporado) sin agregarle una etiqueta llamada < ul>.
    Intenta de nuevo, encerrando la función entre estas dos etiquetas :

    < ul>
    aquí va la función
    < /ul>

    Saludos

  9. Muchas gracias Emilio!!!!

    Exactamente! ha funcionado. Y eso que dices que estás anquilosado. Eres un fenómeno.

    Un saludo

  10. Emilio….te voy a explotar otro poco.

    Puse la lista de páginas, pero cuál sería la función si quiero poner por ejemplo la lista de enlaces?

    Gracias de verdad
    Un saludo

  11. Hola y para que sea widgetizable como harias? o eso no lo podes hacer asi? digo porque quiero poner varias sidebar en el costado pero que el theme sea widgetizable. soy nuevo en wordpress.
    gracias

  12. Mario, para q sea widgetizable deberás trabajar con plantillas, editar -wordpress > 2.0- el archivo functions.php (en la carpeta del theme), agregar

    if ( function_exists(‘register_sidebars’) )

    register_sidebars(4);

    Donde (4) es, por ej., el número de sidebar q utilizarás. Para cada plantilla o página q utilices, solo bastará con agregar donde irá la sidebar

    Y en el archivo mi_sidebar_numero_4.php, lo siguiente

    Donde 4 es el número por el q wordpress la identificará. Por lo tanto, cualquier widget q agregues a la sidebar Nº 4, se mostrará solamente en ésta.
    Lo mismo corre para la 1, 2, 3, 5, 10, etc., depende de la cantidad de páginas personalizadas q desees en tu site.
    Te recomiendo, ya q eres nuevo y para evitar problemas de con el theme, q copies y pegues la sidebar original del tema.
    Un abrazo, te me cuidas!!

    • hola Emilio. Buenos dias, casi tardes (Venezuela). Quiero hacer algo así como lo que explicas en este tutorial, pero no lo he logrado. Si ves en mi sitio, hay una seccion que se llama tienda online. Deseo habilitar solo en esa página y todas sus descendientes una sidebar diferente, donde se vea el carrito de compras, las categorías de productos, buscador de productos y en fin una gran cantidad de opciones en widgets que ofrece el plugin que utilizo para la tienda, pero, para quienes sólo entran a leer noticias no me gustaria que vieran todas esas cosas.
      Ah pero claro que hay algunas cosas que quiero que vean todos, como la imagen del twitter, los users online, etc.

      Todo esto lo configuro en widgets, hasta el boton like que tengo de Facebook.
      Editando los archivos para crear otra sidebar, no consigo en el sidebar.php cómo diablos se muestran los demás widgets, hay sólo algunos.

      tambien creo que tu tutorial se refiere a una version antigua de wordpress. estoy aqui preguntando y ni siquiera se si todavia usaras el mismo email

      el asunto es que si me llamo la atención esto de crear sidebars widgetizables. pero tendría que pedirte que ahondaras un poco mas en tu explicacion. porque de verdad no entendía nada. bueno, veamos si aún andas por aqui y si estás disponible para que me eches una mano. un saludo

  13. hola a todos, le he estado dando un monton de vueltas a la cabeza pero no encuentro solucion a esto, tengo un blog, y quería que un banner apareciese en el sidebar en todas las páginas menos en la home, pero no sé como hacerlo, por lo que os agradeceria vuestra ayuda.

  14. Muchas gracias por el articulo, me ha solucionado perfectamente la duda.

  15. Es increible haber encontrado este tutorial en español. Está genial y lo pondré en práctica en breve. Deberían de contratarte los de WordPress, jeje. En serio, muchas gracias.

  16. Hola amigos, yo ya lo conseguí crear una nueva plantilla para una página en concreto, ahora solo me falta modificar el sidebar a mi gusto… Pero ahora tengo otro problema y no he encontrado la solución aquí. ¿Cómo hago ahora para aplicar a esta nueva plantilla una hoja de estilos nueva y diferente que yo haya creado? ¿Dónde debo especificarlo? Muchas gracias por vuestra ayuda ;)

  17. y si quisiera tener un diferente header.php para cada categoria???

  18. Hola, muchas gracias por compartir con nosotros este mini pero Enorme tutorial… tenia mas de 2 noches sin dormir buscando esto. encontraba cosas que al final no me funcionaban, y con tu explicacion en menos de 10 minutos ya habia conseguido mi objetivo, muchas gracias. un Saludo enorme!!

  19. Este metodo funciona con la ID de la pagina, funcionaria tabien con por ejemplo acerca-de como nombre de ID?

  20. Hola Emilio,

    Me encanta tu artículo, ya que lo veo muy práctico y completo.
    Tengo una duda ya que en vez de una lista de páginas me encantaría añadir una imágen en mi sidebar. Es decir en vez de <?php wp_list_pages('title_li=>._Sección Literaria ‘); ?> …. me encantaría saber cual es el código para insertar una imágen o el widget «image».

    Gracias por adelantado,

    Un fuerte saludo

  21. me quivoque con el primer comentario, lo escribi donde no era :(
    hola Emilio. Buenos dias, casi tardes (Venezuela). Quiero hacer algo así como lo que explicas en este tutorial, pero no lo he logrado. Si ves en mi sitio, hay una seccion que se llama tienda online. Deseo habilitar solo en esa página y todas sus descendientes una sidebar diferente, donde se vea el carrito de compras, las categorías de productos, buscador de productos y en fin una gran cantidad de opciones en widgets que ofrece el plugin que utilizo para la tienda, pero, para quienes sólo entran a leer noticias no me gustaria que vieran todas esas cosas.
    Ah pero claro que hay algunas cosas que quiero que vean todos, como la imagen del twitter, los users online, etc.

    Todo esto lo configuro en widgets, hasta el boton like que tengo de Facebook.
    Editando los archivos para crear otra sidebar, no consigo en el sidebar.php cómo diablos se muestran los demás widgets, hay sólo algunos.

    tambien creo que tu tutorial se refiere a una version antigua de wordpress. estoy aqui preguntando y ni siquiera se si todavia usaras el mismo email

    el asunto es que si me llamo la atención esto de crear sidebars widgetizables. pero tendría que pedirte que ahondaras un poco mas en tu explicacion. porque de verdad no entendía nada. bueno, veamos si aún andas por aqui y si estás disponible para que me eches una mano. un saludo

  22. Este tutorial es fantástico, pero existe el plugin «Dinamic widgets» que hace lo mismo de forma más sencilla y sin tocar el código, ideal para torpes sin idea de programación como yo.

    Mi problema es similar pero lo que quiero es cambiar el menú por defecto de navegación, el que está ubicado normalmente arriba o a pie de página. Puedo indicar a WordPress que menú quiero mostrar por defecto en todo el sitio en el panel_de_administración/apariencia/menús.

    Si quiero que el menú de navegación cambie por otro según la categoría ¿Cómo se hace? Alguien me da pistas por favor.

  23. Estimados amigos.

    Tengo un problema y necesito de su ayuda, tengo una página web la cual fue creada con WORDPRESS y mi problema surge cuando pongo imágenes en la sidebar aparece un punto gris que no sé como borrarlo, si alguien pudiera ayudarme se lo agradecería mucho.

    Saludos.

  24. Me gustaria saber como hago para que slider salga en todas las secciones ejemplo inicio, nuestra empresa,

Trackbacks/Pingbacks

  1. Extemp”F”oraneo » Diferentes “sidebar” en páginas de Wordpress. - [...] Al artículo   [...]

Escribir un comentario

Creative Commons License