有百度知道有知友提出问题:
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/