English Português

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.

Escrito por Francisco Oliveros

Soy un gran aficionado del diseño y de todo lo que el código puede comunicar. Ingeniero mecánico por profesión, pero dedicado al desarrollo web a tiempo completo.

Blog / Twitter

Artículos relacionados

Sigue leyendo consejos, tips y tutoriales para tu blog.

    Comentarios

    1. tad / Hace 7 años /

      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

      Responder a tad →
    2. Francisco / Hace 7 años /

      @tad acá no creo 😛 pero se puede hacer, seguro esta por ahí.

      Responder a Francisco →
    3. tad / Hace 7 años /

      Bueno, pensé q’ lo habia visto por aquí, en fin. Quiza el modo de encontrarlo sea buscando en ingles.

      Saludos

      Responder a tad →
    4. Vb078 / Hace 12 meses /

      Hey… It is a way to automaticly (always) exclude some tags.
      I just try ::
      °°°°
      function pk_the_tags( $before = ”, $sep = ‘, ‘, $after = ”, $exclude = ‘WordPress, Blogger’ ) {

      °°°°
      Have you any solution for me… many thanxs 😉

      Responder a Vb078 →

    Responder

    ¡Gracias por dejar tu opinión! Por favor procura que tus comentarios estén dentro tema, que no sean promocionales (spam), ilegales u ofensivos, de otro modo, serán borrados. Todos los enlaces serán moderados y la URL indicada NO será enlazada.

    Blog and Web es un blog de Blógstica. Hospedado desde 2008 en Liquid Web.

    Términos de uso - Política de privacidad