在Wordpress中,是否可以修改the_tags以自然排序(natsort)顺序返回标签?

时间:2012-10-01 21:59:11

标签: wordpress tags

我有一个wordpress 3.4.2,并使用名称中带有数字的标签与帖子相关联。

具体做法是: '0-5','6-10','11 -15','16 -20'和'21 -25'是我的标签。

如果以上标签与帖子相关联,我想以natsort顺序(http://php.net/manual/en/function.natsort.php)显示它们,而是按字母顺序返回,如下所示:

0-5,11-15,16-20,21-25, 6-10

意味着6-10将在11-15之后出现,因为'6'出现在'1'之后。

这是我用来带回标签的wordpress电话:

<?php the_tags( '<span class="tag-links"><span class="post-footer-label">' . __('Ranges: ', 'blankslate' ) . '</span>', ", ", "</span>" ) ?>

有谁知道我会如何修改它,或者我应该写什么额外功能,以便我可以按照我喜欢的顺序取回标签?

1 个答案:

答案 0 :(得分:0)

the_tags()显示当前帖子的标签,get_the_tags()将其作为数组返回。然后,您可以对它们进行排序并根据需要显示它们。

在你的情况下,你可以使用这样的东西,它使用strnatcmp

<?php
    function compare_tags_naturally($a, $b) {
        return strnatcmp($a->name, $b->name);
    }

    $unsorted_tags = get_the_tags();
    $tags = usort($unsorted_tags, 'compare_tags_naturally');

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

    echo '<span class="tag-links"><span class="post-footer-label">' . __('Ranges: ', 'blankslate' ) . '</span>';
    echo implode(', ', $links);
    echo '</span>';

?>

如果您希望此排序功能自动应用于所有地方the_tags(),您可以将相关代码包装在插件中,并在“the_tags”上添加Wordpress Filter

不幸的是,目前还没有关于如何做到这一点的官方文档,尽管有documentation on the "the_tags" filter on a site that automatically extracts references to various hooks from the Wordpress source code