我是靠谱客的博主 高挑手套,最近开发中收集的这篇文章主要介绍wordpress 多条件筛选插件,wordpress 多重筛选,巧用自定义分类法,每个项目只能单选,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

演示效果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 多重筛选,巧用自定义分类法,每个项目只能单选所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部