概述
演示效果http://www.gengu.org/tag/lol
本方法不需要自定义文章类型(模型).用系统自动的文章功能即可使用,修改简单实用.
比如我们要增加行业及分类两个自定义分类.
前台效果图
后台效果图,发表文章时,右下角会自动显示
一,在模板的functions.php中的最底部,php结束标签前面,添加如下代码
//自定义文章类型
// 搜索关键字 register_taxonomy
add_action( 'init', 'create_hangye' );//wordpress初始化
function create_hangye() {
$labels = array(
'name' => _x( '产品行业筛选', '产品应用的行业选项' ),
'singular_name' => _x( 'hangye', '行业名称' ),
'search_items' => __( '行业搜索' ),
'all_items' => __( '全部行业' ),
'edit_item' => __( '修改标签' ),
'update_item' => __( '更新标签' ),
'add_new_item' => __( '增加新的行业标签' ),
'new_item_name' => __( '新行业名字' ),
);
register_taxonomy('hangye','post',array(
'hierarchical' => True,
'labels' => $labels
));
}
add_action( 'init', 'create_mycats' );//<span style="color: rgb(85, 85, 85); font-family: 'Microsoft Yahei'; font-size: 15px; line-height: 25px;">wordpress初始化</span>
function create_mycats() {
$labels = array(
'name' => _x( '产品分类筛选', '筛选' ),
'singular_name' => _x( 'mycats', 'taxonomy singular name' ),
'search_items' => __( '产品分类搜索' ),
'all_items' => __( '全部产品分类' ),
'edit_item' => __( '修改标签' ),
'update_item' => __( '更新标签' ),
'add_new_item' => __( '增加新的产品分类标签' ),
'new_item_name' => __( '新产品分类名字' ),
);
register_taxonomy('mycats','post',array(
'hierarchical' => True,
'labels' => $labels
));
}
其中,register_taxonomy为自定义分类的注册函数,系统自带的.
'hierarchical' => True表示后台发表文章时,自定义选项为复选框的形式.直接打勾即可.而不是手工填写.其它参数网上搜索查看吧
修改后,上传,后台即可看到效果.如图,然后进去增加选项即可.
二,顶级分类模板上,循环调用子分类.及子分类下的部分文章
假如要在分类编号为3的顶级分类上使用本插件,则在模板目录中.建立category-3.php这个模板,里面内容,可参考以下代码
<div class="box filter">
<br/>
<p class="tagfilter" id="hangye"<?php if($_GET['hangye']!=''){echo ' data="'.$_GET["hangye"].'"';}?>><b>行业:</b>
<?php
$terms = get_terms("hangye");
$count = count($terms);
if ( $count > 0 ){
foreach ( $terms as $term ) {
if(strtolower(urlencode($_GET['hangye']))==$term->slug){
echo '<a data="'. $term->slug .'" style="border-color: orange;">' . $term->name . '</a>';
}else{
echo '<a style="margin-right:10px"data="'. $term->slug .'">' . $term->name . '</a>';
}
}
}
?></p>
<p class="tagfilter" id="mycats" <?php if($_GET['mycats']!=''){echo ' data="'.$_GET["mycats"].'"';}?>><b>分类:</b> <?php
$terms = get_terms("mycats");
$count = count($terms);
if ( $count > 0 ){
foreach ( $terms as $term ) {
if(strtolower(urlencode($_GET['mycats']))==$term->slug){
echo '<a data="'. $term->slug .'" style="border-color: orange;">' . $term->name . '</a>';
}else{
echo '<a style="margin-right:10px"data="'. $term->slug .'">' . $term->name . '</a>';
}
}
}
?> </p>
<p style="margin-left:40px"><button id="filterSub" >点击筛选</button></p>
</div>
</pre><pre code_snippet_id="1848920" snippet_file_name="blog_20160824_2_2283605" name="code" class="php">
<!--container-->
<div id="container">
<div class="mainbound body">
<div class="products_container" style="padding-top:10px;">
<div id="products_fluid_row1" class="products_fluid_row">
<?php
$i = 0; // 仅为奇偶项 class 作准备
$categories = get_categories('child_of='. $cat .'&depth=0&hide_empty=0&orderby=id&order=asc');// 找出其所有子分类,并按ID号升序排列,其实这里还可以使用数组array(8,9,11,12)输出指定id的分类。
$num=8;//指定每次循环输出的文章篇数
foreach ($categories as $category) { // 开始循环子分类
$now_cat = $category->term_id; // 子分类ID
//$cat_name = $category->cat_name; // 子分类名称
?>
<?php $posts = query_posts("&cat={$now_cat}&orderby=date&showposts={$num}" );
?>
<div class="products_fluid_head">
<div class="products_fluid_name_new">
<strong><?php single_cat_title(); ?></strong><!--其实这里用single_cat_title()和用变量$cat_name都可以了-->
<a href="<?php echo get_category_link($category); ?>"style="float:right;font-weight:normal" target="_blank">More>></a>
</div>
</div>
<div class="prod_row_new">
<?php while(have_posts()) : the_post(); ?>
<div class="prod_col_new left ">
<div class="prod_img_new">
<?php if ( has_post_thumbnail() ) { ?>
<?php the_post_thumbnail(); ?>
<?php } else {?>
<img src="<?php bloginfo('template_url'); ?>/images/xxx.jpg" />
<?php } ?>
</div>
<div class="prod_type_new"><a href="<?php the_permalink(); ?>" target="_blank"><?php the_title(); ?></a></div>
<div class="prod_name_new"><a href="<?php the_permalink(); ?>" target="_blank"><?php the_title(); ?></a></div>
</div>
<?php endwhile; ?>
</div>
<?php $i++; }//$i实现递增?>
</div><!--products_fluid_row-->
</div>
</div>
</div><!--container-->
注意, 模板中筛选需要通过js实用,代码直接加在模板中
<script>
$('.tagfilter a').click(function() {
var papaDate = $(this).parent('.tagfilter').attr('data');
$(this).parent('.tagfilter').find('a').css('borderColor', '');
if(papaDate == undefined | papaDate == "" | papaDate != $(this).attr('data')) {
$(this).css('borderColor', 'orange').parent('.tagfilter').attr('data', $(this).attr('data'));
} else if(papaDate == $(this).attr('data')) {
$(this).css('borderColor', '').parent('.tagfilter').attr('data', '');
} else {
$(this).css('borderColor', '').parent('.tagfilter').attr('data', '');
}
});
$('#filterSub').click(function() {
var urlNow = 'http://' + window.location.host + '/?';
var url = urlNow;
var hangye = $('#hangye').attr('data');
var mycats = $('#mycats').attr('data');
var tag = $('#tag').attr('data');
if(typeof(hangye) != 'undefined') {
if(hangye.length > 0) {
url += 'hangye=' + hangye;
}
}
if(typeof(mycats) != 'undefined') {
if(url.substr(-1) != '?') {
url += '&';
}
if(mycats.length > 0) {
url += 'mycats=' + mycats;
}
}
if(typeof(tag) != 'undefined') {
if(url.substr(-1) != '?') {
url += '&';
}
if(tag.length > 0) {
url += 'tag=' + tag;
}
}
if(urlNow != url) {
window.location.href = url;
}
})
</script>
三,搜索结束页模板.
结束页默认使用archive.php归档模板.如果要使用专用模板.必须新建立一个名为taxonomy.php的新模板.里面内容参考.
<?php get_header(); ?>
<div class="prod_row_new">
<?php while (have_posts()) : the_post(); ?>
<div class="prod_col_new left ">
<div class="prod_img_new"><a href="<?php the_permalink(); ?>" title="TD350"><?php if ( has_post_thumbnail() ) { ?>
<?php the_post_thumbnail('full'); ?>
<?php } else {?>
<img src="<?php echo catch_that_image() ?>" alt="<?php the_title(); ?>"/>
<?php } ?></a></div>
<div class="prod_type_new"><a href="<?php the_permalink(); ?>" title="TD350"><?php the_title(); ?></a></div>
<div class="prod_name_new"><a href="<?php the_permalink(); ?>" title="TD350"><?php the_title(); ?></a></div>
</div>
<?php endwhile; ?>
</div>
<?php get_footer(); ?>
如果要为其中一个分类法定义一个专用模板.比如行业模板.可以建立一个taxonomy-hangye.php.模板即可.
四.搜索结束的链接优化.
如果想用http://www.360.com/color/red
这种形式的链接来显示,那就需要重新制作一个对应自定义分类的页面来展示。
这里我们使用tag的展现方式(这里以twentytwelve为例)
首先我们复制一份tag.php
文件,重新命名为taxonomy-color.php
(color为我们之前命名的分类名)。
在get_header(); ?>
下方添加代码
<?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); ?>
把
<h1 class="archive-title"><?php printf( __( 'Tag Archives: %s', 'twentytwelve' ), '<span>' . single_tag_title( '', false ) . '</span>' ); ?></h1>
替换为
<h1 class="archive-title"><?php printf( __( 'Tag Archives: %s', 'twentytwelve' ), '<span>' . $term->name . '</span>' ); ?></h1>
在
while ( have_posts() ) : the_post();
的下面添加
query_posts(array( 'post_type'=>'post', 'color'=>$term->slug));
保存即可使用
最后
以上就是高挑手套为你收集整理的wordpress 多条件筛选插件,wordpress 多重筛选,巧用自定义分类法,每个项目只能单选的全部内容,希望文章能够帮你解决wordpress 多条件筛选插件,wordpress 多重筛选,巧用自定义分类法,每个项目只能单选所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复