Tags y categorías de un post en el sidebar, header o footer en Wordpress
Es posible que en ocasiones necesites listar las tags de un post o sus categorías en el sidebar del theme que estés utilizando y no sepas cómo acceder a estas variables como podrías hacerlo desde la página “single.php”… Pues bien, estas funciones te ayudarán a conseguir el listado de tags y categorías desde el sidebar, header o footer para poder trabajar con ellas sin problema.
Para empezar deberás buscar dentro de la carpeta del theme de tu Wordpress el archivo “functions.php”, una vez que lo tienes abierto deberás añadir al final el siguiente código PHP, se trata de las funciones que imprimirán por pantalla el listado de tags o de categorías de un post fuera del “single.php”:
<?php function get_content($element) { do_action($element); }; function get_post_tags() { global $constant_post_id; $tags = wp_get_object_terms($constant_post_id, 'post_tag'); $content. = "<ul>"; foreach ($tags as $tag) { $content .= "<li>".$tag->name ."</li>"; }; $content. = "</ul>" echo $content; } add_action('post_tags','get_post_tags'); function get_post_categories() { global $constant_post_id; $categories = get_the_category($constant_post_id); $content. = "<ul>"; foreach ($categories as $category) { $content .= "<li>".$category->name ."</li>"; }; $content.= "</ul>" echo $content; } add_action('post_categories','get_post_categories');
Después de añadir estas dos funciones al archivo “functions.php” de tu theme deberás declarar una variable global dentro de la página single.php en la que almacenaremos el ID del Post en el que nos encontramos para poder utilizarlo posteriormente desde las funciones que hemos declarado previamente. Este es un ejemplo de código dentro de la información del post:
<?php if (have_posts()) : while (have_posts()) : the_post(); global $constant_post_id; // Declaramos una variable global para almacenar el ID $constant_post_id = $post->ID; // Almacenamos el ID del post en la variable global ?> <h2 class="posttitle"><?php the_title(); ?></h2> <?php the_content(); ?> <?php endwhile; else: ?> <p>No existen post</p> <?php endif; ?>
Ya puedes llamarlas desde cualquiera de las tres zonas: header, footer o sidebar. Para ello sólo deberás realizar la llamada con este código php:
<?php get_content(lista_tags); get_content(lista_categories); ?>
En este ejemplo el resultado será una lista desordenada:
Código HTML:
<ul> <li>Categoría 1</li> <li>Categoría 2</li> <li>Categoría 3</li> <li>Categoría 4</li> </ul> <ul> <li>Tag 1</li> <li>Tag 2</li> <li>Tag 3</li> <li>Tag 4</li> </ul>
Resultado por pantalla:
• Categoría 1
• Categoría 2
• Categoría 3
• Categoría 4
• Tag 1
• Tag 2
• Tag 3
• Tag 4
También podemos utilizarlo, por ejemplo, para crear un combo desplegable con las categorías o las tags, en ese caso podrías utilizar las siguientes funciones:
function get_content($element) { do_action($element); }; function get_post_tags() { global $constant_post_id; $tags = wp_get_object_terms($constant_post_id, 'post_tag'); foreach ($tags as $tag) { $content .= "<option value=".$tag->name.">".$tag->name ."</option>"; }; echo $content; } add_action('combo_tags','get_post_tags'); function get_post_categories() { global $constant_post_id; $categories = get_the_category($constant_post_id); foreach ($categories as $category) { $content .= "<option value=".$category->name.">".$category->name ."</option>"; }; echo $content; } add_action('combo_categories','get_post_categories');
En la página donde quieres incluir los combos (header, sidebar o footer) el código HTML/PHP a insertar sería el siguiente:
<select class="select" name="categoria" id="categoria"> <option value="-1">-- Categoría --</option> <!-- Si quieres que haya un valor nulo por defecto --> <?php get_content(combo_categories); ?> </select> <select class="select" name="tag" id="tag"> <option value="-1">-- Tag --</option> <!-- Si quieres que haya un valor nulo por defecto --> <?php get_content(combo_tags); ?> </select>
El resultado en HTML sería:
<select id="categoria" class="select" name="categoria"> <option value="-1">-- Categoría --</option> <option value="Categoría 1">Categoría 1</option> <option value="Categoría 2">Categoría 2</option> <option value="Categoría 3">Categoría 3</option> </select> <select id="tag" class="select" name="tag"> <option value="-1">-- Tag --</option> <option value="Tag 1">Tag 1</option> <option value="Tag 2">Tag 2</option> <option value="Tag 3">Tag 3</option> </select>
Y visualmente:


May 6th, 2010 at 9:44 am
OK, realmente útil… Ya sé de donde ha salido esto y dnd se va a implementar…