如何在帖子中显示标签,按顺序计数(最常用)而不是按字母顺序?

时间:2018-04-13 作者:pratikkry

我想显示最常用的标签首先在单贴页,归档页和主页上。

For example:

我有4个标签-Ball(5个员额),Doll(3个职位),Cat(2个员额),Apple(1个员额)。每当我在帖子中放置多个标签时,这些标签都会按字母顺序显示,但我想先显示最常用的标签。

1 个回复
SO网友:Jacob Peattie

这可以通过使用get_the_tags() 按排序结果count 每个标记的属性usort(), 然后通过它们循环并将其作为链接输出:

/*
 * Get array of tags and sort by count.
 */
$tags = get_the_tags();

if ( $tags && ! is_wp_error( $tags ) ) {
    usort( $tags, function( $a, $b ) {
        return $b->count - $a->count; // Swap $a and $b for ascending order.
    } );

    /*
     * Get an HTML link for each tag and put in an array.
     */
    $links = array();

    foreach ( $tags as $tag ) {
        $links[] = \'<a href="\' . esc_url( get_tag_link( $tag ) ) . \'" rel="tag">\' . $tag->name . \'</a>\';
    }

    /*
     * Output links separated by comma.
     */
    echo implode( \', \', $links );
}
另一个实现是创建the_tags(), 将标记重新排序为wp_list_sort() 通过get_the_terms 过滤器:

/**
 * Retrieve the tags for a post, ordered by post count.
 *
 * @param string $before Optional. Before list.
 * @param string $sep    Optional. Separate items using this. 
 * @param string $after  Optional. After list.
 */
function the_tags_wpse( $before = null, $sep = \', \', $after = \'\' ) {
    add_filter( \'get_the_terms\', $callback = function( $tags ) {
        return wp_list_sort( $tags, \'count\', \'desc\' );
    }, 999 );
    the_tags( $before, $sep, $after );
    remove_filter( \'get_the_terms\', $callback, 999 );  
}

结束

相关推荐

No duplicate tags by category

我有脚本显示类别中的列表标签,效果很好。<ul class=\"inline-list\"> <?php query_posts(\'category_name=lain-lain\'); if (have_posts()) : while (have_posts()) : the_post(); if( get_the_tag_