黑马模板网专注企业网站模板制作,包括企业pbootcms网站模板,静态网页模板,网站源码下载,HTML网站模板等等。
免责声明:本站所有资源(模板、图片)搜集整理于互联网或者网友提供,仅供学习与交流使用,如果不小心侵犯到你的权益,请及时联系我们删除该资源。
在做一些内容比较丰富的 CMS 站点、产品站点或在线商店的时候,我们需要对网站的内容进行筛选过滤,比较通用的方法就是以产品分类或产品属性作为过滤条件(产品属性也可以看成具有某种共同属性的分类)。
对数码产品比较关注的朋友对下面的功能应该很熟悉,这是中关村在线的产品列表页面的截图。
下面这一个是我为客户定制的一个明星过滤的截图,前台过滤条件中的所有分类都可以在后台添加。过滤条件在后台以自定义分类项目或自定义字段的形式出现。
上面的效果看似复杂,实现起来其实也不困难,这主要得益于 WordPress 灵活的数据结构和丰富的功能函数,下面我们就来看看如何实现上面的功能。
添加查询参数,构造查询 URL
实现上面的功能主要通过 WordPress 的自定义查询和 add query var 函数。
第一步,我们需要列出自定义分类里面的所有分类项目作为查询条件,这一步是关键所在。
复制$args = array('taxonomy' => 'star_aera');
$terms = get_terms('star_aera', $args);
$is_all = get_query_var('star_aera') ? '' : 'checked';
$term_list_area .= '<input name="star_aera"' . $is_all . ' type="checkbox" value="' . remove_query_arg('star_aera') . '" onclick="location.href=this.value">' . '所有';
$count = count($terms);
if ($count > 0) {
foreach ($terms as $term) {
$is_checked = (get_query_var('star_aera') == $term->term_id) ? 'checked' : '';
$term_list_area .= '<input name="star_aera" type="checkbox"' . $is_checked . ' value="' . add_query_arg(array('star_aera' => $term->term_id, 'paged' => false)) . '" onclick="location.href=this.value">' . $term->name;
}
echo $term_list_area;
}
合并多种查询条件并构造查询
然后根据查询条件,查询后台的内容,并输出。
复制if (!empty($star_zhiye)) {
//构造其中一个查询条件的查询数组,这里是根据自定义字段查询
$array_star_zhiye = array(
'taxonomy' => 'star_zhiye',
'field' => 'id',
'terms' => $star_zhiye,
);
} else {
$array_star_zhiye = "";
};
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
//合并所有查询调节并构造查询参数
$args = array(
'post_type' => 'star',
'posts_per_page' => '12',
's' => $phone,
'paged' => $paged,
'tax_query' => array(
'relation' => 'AND',
//$array_star_sex,
//$array_star_chuchang,
//$array_star_daiyan,
//$array_star_aera,
$array_star_zhiye, //篇幅问题,上面的4个查询条件省略掉了,可以根据自己的需要添加
)
);
//新建查询对象
$wp_query = new WP_Query($args);
输入自定义查询结果
有了上面的自定义查询对象,我们就可以像 WordPress 普通的分类模板那样输出文件内容了。
复制while ($wp_query->have_posts()) : $wp_query->the_post();
get_template_part('content', 'stars');
endwhile;
其实 WordPress 发展到今天,早已不只是当初的 Blog 程序了,她已经强大到可以作为一个功能全面的 CMS 甚至是 PHP 框架来使用了。根据不同的需求,我们完全可以定制出各种各样的Web应用程序。