Lista de etiquetas hecha de categoría específica - WordPress
-
24-10-2019 - |
Pregunta
¿Está esta característica integrada en WordPress? No vi nada dentro del códice.
Codex.wordpress.org/function_reference/wp_tag_cloud
Tengo algunas páginas que son específicas de la categoría y me gustaría mostrar todas las etiquetas asociadas con esas publicaciones.
Encontré esto, pero no estoy seguro de si es apropiado o si existe una mejor manera (fuente)(Método viejo !!!!):
<?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 desde una categoría específica, este código es mucho mejor (solo cambie el nombre de la categoría):
:: recientemente actualizado nuevamente debido a un error de bucle ::
<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 duro, puedo tener una solución, actualice esto si surge una nueva.
Solución
Creo que el método que has encontrado es la única forma en que puedes lograr lo que estás buscando. Tal vez pueda 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 central de WordPress.
Otros consejos
No conseguí que el código anterior funcionara mi instalación de WordPress. Sin embargo, logré ajustarlo hasta que funcionó. Aquí está mi ajuste:
$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();
Aquí hay un ejemplo mucho más fácil ... solo cambia el nombre de la categoría y oye, ya que estás hecho. 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();
?>