没有默认方式对术语进行随机排序。使用php有很多方法可以做到这一点。
首先,您需要删除number
参数来自get_terms
. 按照您的代码目前的状态,您将获得5个术语,并将它们重新组合。
为了实现这一点,您需要从分类中检索所有术语,使用php函数随机洗牌返回的数组shuffle()
, 通过一个foreach
循环,创建一个新数组,然后使用array_slice
获取前5个条目
这只是一个粗略的想法
$all_artists = get_terms( \'category\' );
shuffle( $all_artists );
$term_names = [];
foreach ( $all_artists as $cat )
$term_names[] = $cat->name;
$output = array_slice( $term_names, 0, 5 );
foreach ( $output as $key=>$value )
echo \'<p>\' . $value . \'</p>\';
EDIT
这里有另一种实现同样目标的方法。这涉及到创建一个自定义函数来对数组进行随机排序,并将键/值对保留在适当的位置。此函数来自
this answer 由@karim79发布
然后您可以使用array_slice()
获取前%键/值对
function shuffle_assoc( $list )
{
if ( !is_array( $list ) )
return $list;
$keys = array_keys( $list );
shuffle( $keys );
$random = [];
foreach ( $keys as $key )
{
$random[$key] = $list[$key];
}
return $random;
}
$terms = get_terms( \'category\' );
$output = array_slice( shuffle_assoc( $q ), 0, 5 );
?><pre><?php var_dump($output)); ?></pre><?php