список тегов из определенной категории - WordPress - PullRequest
6 голосов
/ 16 марта 2011

Эта функция встроена в WordPress?я ничего не видел в кодексе.

codex.wordpress.org / Function_Reference / wp_tag_cloud

У меня есть несколько страниц, которые относятся к конкретной категории, и я хотел бы показать все теги, связанные с этимиposts.

Я нашел это, но я не уверен, что это правильно или существует лучший способ ( source ) ( old method !!!! ):

<?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(); ?>

ОБНОВЛЕНИЕ (упрощено) :::

, чтобы составить список тегов из определенной категории, этот код намного лучше (просто измените название категории):

:: Недавно снова обновлено из-за ошибки цикла ::

    <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>

Даже если у меня может быть решение, обновите его, если появится новое.

Ответы [ 3 ]

2 голосов
/ 01 апреля 2014

Я не получил приведенный выше код для работы моей установки WordPress. Однако мне удалось настроить его, пока он не заработал. Вот мой твик:

$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();
2 голосов
/ 05 октября 2017

Вот гораздо более простой пример .... Просто измените название категории и сделайте это. Соответствующие теги будут распечатаны в формате списка.

<?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();

?>
2 голосов
/ 16 марта 2011

Я думаю, что метод, который вы нашли, это единственный способ достичь того, что вы ищете.Может быть, вы можете изменить некоторые строки, но концепция верна.

В настоящий момент я не думаю, что есть способ фильтровать теги, как если бы вы использовали базовую функцию wordpress.

...