web-dev-qa-db-ja.com

特定のカテゴリのタグを取得する

カテゴリからタグを取得するためにこのコードを使用します。

カテゴリからすべてのタグを取得

カテゴリページに特定のタグを表示したい。私は8つのカテゴリーがあり、これが私のコードです:

        <?php if (is_category('10')) { ?>
    <?php $args = array(
  'categories'        => '10'
);
$tags = get_category_tags($args);
$content .= "<ul>";
foreach ($tags as $tag) {
  $content .= "<li><a href=\"$tag->tag_link\">$tag->tag_name</a></li>";
}
$content .= "</ul>";
echo $content; ?> 

    <?php } elseif (is_category('4')) { ?>
<?php $args = array(
  'categories'        => '4'
);
$tags = get_category_tags($args);
$content .= "<ul>";
foreach ($tags as $tag) {
  $content .= "<li><a href=\"$tag->tag_link\">$tag->tag_name</a></li>";
}
$content .= "</ul>";
echo $content; ?> 
.....

それが私が最善の方法ではないと思うそれぞれのカテゴリーのために、それはどんな考えですか?

2

get_terms() を使用すると、指定した分類法のall用語を検索できます(これには、タグとタグの両方が含まれます)。

カテゴリアーカイブページでカテゴリを取得するには、次のようにします。

get_category( get_query_var( 'cat' ) )

現在表示されているcatアーカイブページのobjectが表示されます。

そのため、実際の用語リストは次のようになります。

$terms = get_terms(
     get_category( get_query_var( 'cat' ) )
    ,array(
         'fields'       => 'ids'
        ,'hierarchical' => true
        ,'hide_empty'   => false
        ,'pad_counts'   => true
     )
);

$term_links = array();
foreach ( $terms as $term )
{
    $link = get_term_link( $term, $taxonomy );

    ! is_wp_error( $link ) AND $term_links[] = sprintf(
             '<a href="%s" rel="tag">%s</a>'
            ,esc_url( $link )
            ,$term->name
    );
}
// Now do something clever with $term_links
// For example:
! is_empty( $terms ) AND printf(
     '<ul>%s</ul>'
    ,implode( "", $term_links )
);
2
kaiser