WordPress 通过自定义分类法(post custom taxonomy)来筛选文章

有很多人找做筛选功能,不管是自定义字段筛选还是分类法筛选,或者分类与标签筛选,其实都大同小异,这里提供自定义分类法筛选文章的功能教程。

首先,新建自定义分类法,这里举例两个:

add_action('init', 'MBT_post_type');   function MBT_post_type() {   register_taxonomy(   'people',   'post',   array(   'label' => '人物',   'rewrite' => array( 'slug' => 'people' ),   'hierarchical' => true   )   );   register_taxonomy(   'company',   'post',   array(   'label' => '企业',   'rewrite' => array( 'slug' => 'company' ),   'hierarchical' => true   )   );   }

加入以上代码后,需要在后台更新下固定链接(设置-固定链接,不用改什么,点保存更改即可)。

再者就是建立筛选页面,这里主要放出主要筛选代码。
获取需要筛选的元素列表:

 $arr = array(1,2,3); //数组   if(count($arr) > 0){   foreach($arr as $people){   $p = get_term_by("id",$people,"people");   $class = ($_GET['people'] == $people)?'active':'';   echo '<a href="?people='.$people.'" class="'.$class.'" rel="nofollow">'.$p->name.'</a>';   }   }

处理筛选逻辑:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;   if(isset($_GET['people'])){   $args = array(   'post_type' => 'post',   'tax_query' => array(   array(   'taxonomy' => 'people',   'field' => 'term_id',   'terms' => $_GET['people'],   ),   ),   'paged' => $paged   );   }else{   $args = array(   'post_type' => 'post',   'paged' => $paged   );   }   query_posts($args);  while ( have_posts() ) : the_post();  //循环列表的item  endwhile; wp_reset_query();

以上代码就是当传入一个people的tag_id时,就筛选出当前人物的文章。

值得注意的是,通过筛选后的文章分页,可能需要去掉最后的wp_reset_query(); 具体情况看你们自己测试分页时是否有效。

以上介绍的是单层筛选,当然还可以多层筛选,有需要的可以找定制开发~

来源地址:WordPress 通过自定义分类法(post custom taxonomy)来筛选文章

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享