【问题标题】:In Wordpress, can the_tags be modified to return tags in natural sort (natsort) order?在 Wordpress 中,可以修改 the_tags 以按自然排序(natsort)顺序返回标签吗?
【发布时间】:2012-10-01 21:59:11
【问题描述】:

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

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

【问题讨论】:

    标签: wordpress tags


    【解决方案1】:

    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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多