1

我有一个 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>" ) ?>

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

4

1 回答 1

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 过滤器。

不幸的是,目前没有关于如何做到这一点的官方文档,尽管网站上有关于“the_tags”过滤器的文档,它自动从 Wordpress 源代码中提取对各种钩子的引用

于 2012-10-03T20:38:58.777 回答