我使用以下代码尝试显示随机标记列表:
<?php wp_tag_cloud('smallest=10&largest=10&number=5&format=list&order=rand&orderby=count'); ?>
这会显示5个标签的列表,但订单不是随机的,并且在重新加载页面时不会更改。
如何实现这一目标的任何帮助?
非常感谢。
答案 0 :(得分:2)
我今晚正在寻找自己的答案,因为谷歌搜索结果相当高,我认为当我遇到它时,我会为其他人发布解决方案。
我的要求是显示每个页面刷新的随机标签以及排除某些标签的能力。为了我的目的,我把它放在functions.php中,因为我讨厌用函数混淆我的模板文件。
函数 - 将其插入functions.php文件
function jr_get_tags_but_exclude() {
$args = array('exclude' => '36 17'); // see notes below
$alltags = get_tags( $args );
shuffle($alltags);
$count=0;
if ($alltags) {
foreach($alltags as $tag) {
$count++;
echo '<a href="'.get_tag_link($tag->term_id).'">'.$tag->name.'</a>';
if( $count >19 ) break;
}
}
}
致电 - 将其插入模板页面
<?php jr_get_tags_but_exclude(); ?>
备注强>
要排除代码,您需要标记ID。获取ID的最简单方法是转到帖子 - &gt;标记并将鼠标悬停在要排除的标记上。例如,当您悬停在&tag_ID=9
上时,ID#将在浏览器底部的网址栏中显示。
get_tags
的Wordpress codex表示只分隔一个空格,分隔每个标记ID,不需要逗号。
关于随机化结果,遗憾的是rand
不是$arg
的可用选项或get_tags
。
要更改显示的代码数量,请调整if ( $count >19 )
19 = 20个代码,29 = 30等
shuffle($alltags);
是随机化
$count=0;
启动计数器,$count++;
计算发布的每个标记,if( $count >19 ) break;
结束循环,在这种情况下发布20个标记。
信用与参考
主要基于这些绅士的解决方案
https://wordpress.stackexchange.com/questions/26112/how-to-limit-and-display-tag
用于get_tags的wordpress codex
http://codex.wordpress.org/Function_Reference/get_tags
在您的模板文件中 - 无需任何功能
<?php
$args = array('exclude' => '36 17'); // see notes below
$alltags = get_tags( $args );
shuffle($alltags);
$count=0;
if ($alltags) {
foreach($alltags as $tag) {
$count++;
echo '<a href="'.get_tag_link($tag->term_id).'">'.$tag->name.'</a>';
if( $count >19 ) break;
}
}
?>
请回复任何发现的错误,以便我可以编辑它们。即使在我清醒的时候,我也半睡着了,用PHP吮吸。