我有一个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>" ) ?>
有谁知道我会如何修改它,或者我应该写什么额外功能,以便我可以按照我喜欢的顺序取回标签?
答案 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。