2011-03-16 20 views
6

¿Esta función está integrada en wordpress? No vi nada dentro del codex.lista de etiquetas de una categoría específica - wordpress

codex.wordpress.org/Function_Reference/wp_tag_cloud

tengo unas pocas páginas que son categoría específica y me gustaría mostrar todas las etiquetas asociadas a esos puestos.

he encontrado esto, pero no estoy seguro de si es adecuado o si no existe una manera mejor (source) (viejo método !!!!):

<?php 
    query_posts('category_name=html'); 
    if (have_posts()) : while (have_posts()) : the_post(); 
     $posttags = get_the_tags(); 
     if ($posttags) { 
      foreach($posttags as $tag) { 
       $all_tags_arr[] = $tag -> name; 
      } 
     } 
    endwhile; endif; 

    $tags_arr = array_unique($all_tags_arr); 
?> 
    <ul> 
<?php 
    foreach($tags_arr as $tag){ 
     echo '<li>'.$tag.'</li>'; 
    } 
?> 
</ul> 
<?php wp_reset_query(); ?> 

ACTUALIZACIÓN (simplificado) :: :

para hacer una lista de etiquetas de una categoría específica de este código es mucho mejor (sólo cambia el nombre de la categoría):

:: Recientemente actualizado de nuevo debido a un bucle de correo rror ::

<ul> 
       <?php 
        query_posts('category_name=html'); 
        if (have_posts()) : while (have_posts()) : the_post(); 

         if(get_the_tag_list()){ 
          echo $posttags = get_the_tag_list('<li>','</li><li>','</li>'); 
         } 

        endwhile; endif; 

        wp_reset_query(); 
       ?> 
</ul> 

Incluso si tengo una solución, actualice esta si aparece una nueva.

+0

Y cómo se puede integrar esto p. en la barra lateral? ¿Puede ser más específico sobre los pasos, dónde pegar el código, etc.? ¡Gracias! –

+0

Lo único en lo que se basa la parte inferior del código es el category_name que colocaste. Puedes pegarlo en cualquier lugar que desees. Si desea que se muestre una lista de etiquetas de UNA categoría, coloque el nombre de la categoría donde dice "html" y péguelo en el lugar que desee. –

+0

Esto no ignora los duplicados. Muestra la etiqueta cada vez que aparece dentro de una publicación. ¿Alguien sabe de una forma de ignorar duplicados y mostrar solo etiquetas únicas? – Nick

Respuesta

2

Creo que el método que ha encontrado es la única forma en que puede lograr lo que está buscando. Tal vez puedas modificar algunas líneas, pero el concepto es correcto.

Por el momento no creo que haya una manera de filtrar las etiquetas como lo haría con una función de WordPress.

+0

es gracioso porque en mi búsqueda de una respuesta, la gente ha estado haciendo esta pregunta hasta 3 años atrás (en los foros de wordpress). No sé por qué aún no lo incluyeron. Bueno, esto hará que –

+1

quizás solo porque hay cosas más urgentes para trabajar. si se puede lograr algo con 8 líneas de código, está bien así. – bluantinoo

+1

logré acortar el código con una función de wordpress que encontré. se ve un poco mejor. Actualicé la pregunta –

2

No obtuve el código anterior para trabajar en mi instalación de WordPress. Sin embargo, logré modificarlo hasta que funcionó. Aquí está mi tweak:

$catid = get_cat_ID(single_cat_title("",false)); 
$catobj = get_category($catid); 
$catslug = $catobj->slug; 
$all_tags_arr = array(); 
query_posts('category_name='.$catslug); 
if (have_posts()) : while (have_posts()) : the_post(); 
    $posttags = get_the_tags(); 
    if ($posttags) { 
     foreach($posttags as $tag) { 
      $all_tags_arr[] = $tag -> term_id; 
     } 
    } 
endwhile; endif; 

$tags_arr = array_unique($all_tags_arr); 

$tagcloud_args = array(
    'include' => implode(',',$tags_arr), 
); 

wp_tag_cloud($tagcloud_args); 
wp_reset_query(); 
1

Aquí hay un ejemplo mucho más fácil ... Simplemente cambie el nombre de la categoría y listo. Las etiquetas asociadas se imprimirán en un formato de lista.

<?php query_posts('category_name=html'); if (have_posts()) : while (have_posts()) : the_post(); 

    $posttags = get_the_tags(); 

    if ($posttags) { 
     foreach($posttags as $tag) { 
      $all_tags[] = $tag -> name; 
     } 
    } 
    endwhile; endif; 

    //This snippet removes any duplicates. 
    $tags_unique = array_unique($all_tags); 

    echo '<ul>'; 
     foreach($tags_unique as $unique) { 
      echo '<li>'.$unique.'</li>'; 
     } 
    echo '</ul>'; 

    wp_reset_query(); 

?> 
Cuestiones relacionadas