[实测]WordPress随机显示分类名称的代码

有百度知道有知友提出问题:

wordpress有插件可以随机显示分类项目吗?注意是分类项目不是文章。可以不用的插件就最好。

链接地址:http://zhidao.baidu.com/question/500324413023524444.html

很早前,我发布了一篇关于wordpress随机文章的进阶用法。此次该知友的需求不同于此;所以我重新针对该知友的需求,编写并测试了如下代码:

function wpdit_get_terms() {

	// 获取所有category
	$terms = get_terms(array(
		'hide_empty' 	=> false,
		'taxonomy'		=> 'category'
		));

	if ( ! count( $terms ) )
		return;

	// 随机截取
	// mt_rand 生成不大于数组元素总和的随机数
        // 或者直接指定长度,但有风险(若分类总数少于5会报错)
	$rand_terms = wpdit_get_random_elements( $terms, mt_rand(0, count($terms) - 1 ) );

	// 输出分类链接
	$term_list = '';
	foreach ($rand_terms as $key => $term) {
		$term_list .= '' . $term->name.' | ';
	}
	printf( '
%s
', trim( $term_list, ' | ' ) ); } function wpdit_get_random_elements( $array, $limit = 0 ) { shuffle($array); if ( $limit > 0 ) { $array = array_splice($array, 0, $limit); } return $array; }

原理是:先取出所有分类(category)组成数组,然后利用shuffle函数随机排列数组,最后使用array_splice“截取”随机长度的数组元素。

运行结果示例:

Trackbacks | Titles | Sticky | Captions | Alignment

Sticky | Child Category 02 | Alignment | Markup | Gallery

运行参照的测试数据来源:http://wptest.io/

发表评论

电子邮件地址不会被公开。 必填项已用*标注