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(( 'child_of=51&title_li=<h2>'  
    .__(' Seccion 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
 

13 respuestas


  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!!


  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.

Un trackback

  1. Extemp”F”oraneo » Diferentes “sidebar” en páginas de Wordpress.:

    [...] Al artículo   [...]

Dejar un comentario

Cerrar
Envíalo por correo
Creative Commons License