lunes, 1 de noviembre de 2010

Sidebars dinamicos segun categoria

Primer Paso:

Primero tenemos que conseguir un listado de las ID de las categorias que tenemos en la base de datos (esto lo hacemos entrando al menu Categorias y pasando el mouse sobre cada una de ellas, y vamos a ver en la barra de estado una url que finaliza con
&tag_ID=
y el numero que le sigue es el ID que buscamos.

Por cada una de las categorias que queramos con sidebars propios, tenemos que crear un archivo sidebar-$ID.php en la carpeta del tema que tengamos activado actualmente. ( para la categoria 3 seria el archivo sidebar-3.php ).

Por ultimo cada archivo debe tener el siguiente contenido:
<?php if ( function_exists ( dynamic_sidebar($ID) ) ) : ?>
// Contenido HTML
<?php dynamic_sidebar ($ID); ?>
// Mas Contenido HTML
<?php endif; ?>
Nota: Otra vez reemplazando los $ID con el numero del id de la categoria, por ejemplo: 3

Segundo Paso:

En el archivo functions.php tenemos que incluir la siguiente funcion:
function obtenerIDCategoria()
{
$categoria = get_the_category();
return $categoria[0]->cat_ID;
}

Luego insertamos el siguiente codigo:
if(function_exists('register_sidebar')){ 
 
  foreach(get_categories() as $categoria){
   register_sidebar(array(
    'name' => $categoria->name,
    'id' => 'sidebar-'.$categoria->cat_ID
   )); 
  }  
 } 
Este codigo recorre todas las categorias creadas y las registra con su nombre e id para que sean mostradas en el menu Widgets.

Bueno ya tenemos creados los archivos donde se van a renderizar los sidebars y tambien los tenemos registrados en el wordpress para enlazar el sistema de wordpress con nuestros sidebars "customizados".

Ahora falta indicar a wordpress en que archivos queremos que se muestren los sidebars (archive.php, site.php, category.php, etc)

Ultimo Paso:

Yo unicamente modifique el archivo category.php pero pueden cambiar el que quieran. El codigo que hace falta para mostrar el sidebar de la categoria en la que estamos parados actualmente es:

get_sidebar( obtenerIDCategoria() );

Simplemente se esta mostrando el sidebar con el id obtenido con esa funcion, que devuelve el id de la categoria sobre la que estamos navegando.

A continuacion les dejo links a la referencia de las funciones que usamos.

register_sidebar
get_sidebar

Bueno eso es todo cualquier duda comenten!

No hay comentarios:

Publicar un comentario