Wordpress中自定义字段 custom fields 多字段 查询

Wordpress中实现多个自定义字段 custom fields 查询 例如下图

 

step1


插入字段wordpress会自动加入 wp_postmeta表中去

注意:最好想好要加那些字段 再添加 wordpress不支持 通过界面删除自定义字段

必须要通过SQL语句删除

 

 

 

Step2

在TwentyEleven 主题的基础上的index.php文件中 添加上如下代码

<?php
/**
 * The main template file.
 *
 * This is the most generic template file in a WordPress theme
 * and one of the two required files for a theme (the other being style.css).
 * It is used to display a page when nothing more specific matches a query.
 * E.g., it puts together the home page when no home.php file exists.
 * Learn more: http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Eleven
 */

get_header(); ?>
<script language="JavaScript" type="text/JavaScript">

function showorhidediv(){
var sizeRadio=document.getElementById("SizeRadio");

var vehicleRadio=document.getElementById("VehicleRadio");

var size=document.getElementById("SizeDiv");

var vehicle=document.getElementById("VehicleDiv");
if(sizeRadio.checked)
{
   vehicle.style.display='none';

    size.style.display='block';
}
else if(vehicleRadio.checked)
{
   size.style.display='none';

    vehicle.style.display='block';
}
}
</script>

		<div id="primary">
			<div id="content" role="main">
			
			<form method="get" action="">
			   Search Tyres By 
			    <input type="radio" name="category" value="Vehicle" id="VehicleRadio" onClick="showorhidediv()" checked/>
			   <label for="VehicleRadio">Vehicle</label> 
               
			   <input type="radio" name="category" value="Size" id="SizeRadio"  onClick="showorhidediv()"/>
			   <label for="SizeRadio">Size</label>
			   <div id="SizeDiv" style="width:300px; height:150px;border:1px red solid;">
			      <select name="car" id="car" size="1">                  
				 <option value='' selected="true">Car</option>
				 <option value='CR_V'>CR_V</option>
				 <option value='BMW'>BMW</option>
				 <option value='Truck'>Truck</option>
				 <option value='BENZ'>BENZ</option>
				 <option value='QQ'>QQ</option>
			      </select>
			      <br/>
			      <select name="tread" id="tread" size="1">                  
				 <option value='' selected="true">Tread Width</option>
				 <option value='130'>130</option>
				 <option value='140'>140</option>
				 <option value='150'>150</option>
				 <option value='450'>450</option>
				 <option value='550'>550</option>
				 <option value='650'>650</option>
				 <option value='750'>750</option>
			      </select>
			      <br/>
			      <select name="sidewallheight" id="sidewallheight" size="1">                  
				 <option value='' selected="true">SideWall Height</option>
				 <option value='130'>130</option>
				 <option value='140'>140</option>
				 <option value='150'>150</option>
				 <option value='450'>450</option>
				 <option value='550'>550</option>
				 <option value='650'>650</option>
				 <option value='750'>750</option>
			      </select>
			      <br/>
			      <select name="rim" id="rim" size="1">                  
				 <option value='' selected="true">Rim Diameter</option>
				 <option value='130'>130</option>
				 <option value='140'>140</option>
				 <option value='150'>150</option>
				 <option value='450'>450</option>
				 <option value='550'>550</option>
				 <option value='650'>650</option>
				 <option value='750'>750</option>
			      </select>		
							
			</div>
			
			   <div id="VehicleDiv" style="width:300px; height:150px;border:1px red solid; display:none;" onClick="showorhidediv()">
			      vehicle 
			      vehicle
			      vehicle
							
			</div>
			
				 <p>
					<input type="submit" value="SEARCH" />
				</p>
			
			</form>			
			
			<?php if ( ($_GET['rim'] == '') && ($_GET['tread'] == '') && ($_GET['car'] == '') &&  ($_GET['sidewallheight'] == '')) { ?>
			
			<?php if ( have_posts() ) : ?>

				<?php twentyeleven_content_nav( 'nav-above' ); ?>
			
				<?php /* Start the Loop */ ?>
				<?php while ( have_posts() ) : the_post(); ?>

					<?php get_template_part( 'content', get_post_format() ); ?>

				<?php endwhile; ?>

				<?php twentyeleven_content_nav( 'nav-below' ); ?>

			<?php else : ?>

				<article id="post-0" class="post no-results not-found">
					<header class="entry-header">
						<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentyeleven' ); ?></h1>
					</header><!-- .entry-header -->

					<div class="entry-content">
						<p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyeleven' ); ?></p>
						<?php get_search_form(); ?>
					</div><!-- .entry-content -->
				</article><!-- #post-0 -->

			<?php endif; ?>
			
			<?php } else { ?>
			
			<?php
			$searched_posts = get_reviews_by_custom_search();
			echo $_GET['car'];
			
				foreach ($searched_posts as $searched_post) {
				
						echo "<h1 class=\"entry-title\"><a href=\"" . get_permalink($searched_post->ID) . "\">" . $searched_post->post_title . "</a></h1>";
				
						echo "RimDiameter - " . get_post_meta($searched_post->ID,'rim',true) . "<br>";
						echo "TreadWidth - " . get_post_meta($searched_post->ID,'tread',true) . "<br>";
						echo "Car Make - " . get_post_meta($searched_post->ID,'car',true) . "<br>";	
						echo "SideWallHeight - " . get_post_meta($searched_post->ID,'sidewallheight',true) . "<br>";	
						
						echo "<a href=\"" . get_permalink($searched_post->ID) . "\">Read More</a>";
				
				}	
			}
			?>			

			</div><!-- #content -->
		</div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>


 Step3 在functions.php中添加如下代码

 

function get_reviews_by_custom_search() {
global $wpdb;
$rim = $_GET['rim'];
$tread = $_GET['tread'];
$car = $_GET['car'];
$sidewallheight = $_GET['sidewallheight'];

	if ($rim != '') {
		$rim_sql = " AND wpostmeta.meta_key = 'rim' AND wpostmeta.meta_value = '$rim' ";
	}
	if ($tread != '') {
		$tread_sql = " AND wpostmeta2.meta_key = 'tread' AND wpostmeta2.meta_value = '$tread' ";
	}
	if ($car != '') {
		$car_sql = " AND wpostmeta3.meta_key = 'car' AND wpostmeta3.meta_value like '$car' ";
	}	

	if ($sidewallheight != '') {
		$sidewallheight_sql = " AND wpostmeta4.meta_key = 'sidewallheight' AND wpostmeta4.meta_value = '$sidewallheight' ";
	}	

	$querystr = "
		SELECT DISTINCT wposts.*
		FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->postmeta wpostmeta2, $wpdb->postmeta wpostmeta3,$wpdb->postmeta wpostmeta4
		WHERE wposts.ID = wpostmeta.post_id
		AND wposts.ID = wpostmeta2.post_id
		AND wposts.ID = wpostmeta3.post_id
		AND wposts.ID = wpostmeta4.post_id
		" . $rim_sql . "
		" . $tread_sql . "
		" . $car_sql . "
		" . $sidewallheight_sql . "
		ORDER BY wposts.post_date DESC
	";

	$searched_posts = $wpdb->get_results($querystr);
	return $searched_posts;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值