En WordPress, generalmente mostramos las tags o etiquetas en dos lugares, en la barra lateral como nube de tags y en cada post con sus etiquetas correspondientes. Regularmente no es necesario excluir ninguna de ambas listas, pero cuando a un etiqueta le damos una función diferente o destacada respecto a las otras conviene listarla aparte.
Para excluirla de la nube de tags no hay mucho problema pues la misma función wp_tag_clud() que la muestra cuenta con ese parámetro. Ejemplo, excluir las tags con ID 3 y 4:
<?php wp_tag_cloud('smallest=10&largest=18&exclude=3,4'); ?>
Por su parte, la función para mostrar las tags en el post no incluye argumentos para excluir tags:
<?php the_tags('', ', ', ''); ?>
Pero buscando, me encontré con una función a partir de get_the_tags() que puede hacerlo. La función puede colocarse en el archivo fuctions.php y es la siguiente:
/* Excluir tags en Posts */
function pk_the_tags( $before = '', $sep = ', ', $after = '', $exclude = '' ) {
$tags = get_the_tags();
if ( empty( $tags ) )
return false;
$tag_list = $before;
foreach ( $tags as $tag ) {
if (!empty($exclude))
$pos = stripos( $exclude, $tag->name);
else
$pos = false;
if ($pos=== false)
$tag_links[] = '<a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a>';
}
if (empty($tag_links))
return false;
$tag_links = join( $sep, $tag_links );
$tag_links = apply_filters( 'the_tags', $tag_links );
$tag_list .= $tag_links;
$tag_list .= $after;
echo $tag_list;
}
Como se ve en la función, acepta varios argumentos como el antes y después de cada etiqueta de la lista, un separador y lo que nos interesa que es la exclusión. Entonces, desde cualquier parte del theme se puede llamar esta función y excluir tags por su nombre. Ejemplo, excluir tags llamadas “WordPress” y “Blogger”:
<?php if (get_the_tags()) pk_the_tags('', ', ', '', 'Wordpress, Blogger'); ?>
Repito, no es común tener la necesidad de excluir tags en ambos lugares, se usa principalmente en themes tipo revista o con funciones adicionales para las tags, pero a mi me fue útil y se las dejo a mano.
tad agosto 5, 2009 a las 4:08 pm
Hola
Muy buen hack,lo habia visto en alguna parte, pero no recuerdo donde. Por cierto no se si fue en este blog u otro donde habia un code que servia para mostrar el link a los comentarios solo cuando hubiera mas de uno o dos. Sabes algo sobre eso?
Saludos
ResponderFrancisco agosto 5, 2009 a las 6:08 pm
@tad acá no creo 😛 pero se puede hacer, seguro esta por ahí.
Respondertad agosto 6, 2009 a las 1:30 pm
Bueno, pensé q’ lo habia visto por aquí, en fin. Quiza el modo de encontrarlo sea buscando en ingles.
Saludos
Responder