2011-10-13 61 views
0

我只是一个基本的WordPress用户。我需要搜索框多个标准输入(多个条件)搜索内各种自定义字段WordPress的自定义字段多个搜索标准?

例如包括以下自定义字段

颜色:_ ___
尺寸:
__ _ _
价格:_ __
条件:
__ _
折扣%:_ __
命中计数:
__ _

用户可以输入1以上的Fileds。
结果也应过滤多个输入。
那么,我怎么能在查询中处理这个多个条件?

对于每一个输入都是
但是,问题多于1.
我很困惑如何针对多个标准
(以前面的方式)编写查询

请简单示例。

+0

这应该在http://wordpress.stackexchange.com/ –

回答

2

这是您的示例查询,只是为了让您了解如何编写查询。

$query = "SELECT * FROM `wp_pelleresuser` WHERE `status`=1"; 

if(isset($profile) && !empty($profile)) 
{ 
    $length_profile = explode(',',$profile); 
    for($i=0;$i<count($length_profile);$i++) 
    { 
     $query.= " AND FIND_IN_SET('".$length_profile[$i]."',profile_type)"; 
    } 
} 

if(isset($name) && !empty($name)) 
{ 
    $query.= " AND `first_name` LIKE '".$name."'"; 
} 

if(isset($city) && !empty($city)) 
{ 
    $query.= " AND `city_trainer` LIKE '".$city."' OR `city_studio` LIKE '".$city."' OR `city_reseller` LIKE '".$city."'"; 
} 

if(isset($state) && !empty($state)) 
{ 
    $query.= " AND `state_trainer` LIKE '".$state."' OR `state_studio` LIKE '".$state."' OR `state_reseller` LIKE '".$state."'"; 
} 

if(isset($postal) && !empty($postal)) 
{ 
    $query.= " AND `postal_trainer` LIKE '".$postal."' OR `postal_studio` LIKE '".$postal."' OR `postal_reseller` LIKE '".$postal."'"; 
} 
0

如果您想自定义您的搜索页面并允许搜索自定义字段,可以轻松实现此目的。在下面的示例中,我们使用了2个自定义字段。该示例适用于企业目录。每个企业都有自己的贸易领域和位置城市。默认的WordPress的搜索没有附加的表单字段,但你可以按照这个来为你的WordPress网站创建一个使用自定义字段的自定义搜索。

您需要做的第一件事是将其他字段添加到窗体。

我们想要做的是为每个值添加两个表单域。在我的情况下,我正在跟踪贸易和城市。

所以你可以访问这个link创建表单域。

一旦你创建了你的表单域并命名它们,就去你的搜索。PHP文件并将新值捕获到变量中,$ _GET ['your field name'];

$trade = $_GET['trade']; 
$city = $_GET['city']; 

然后,您可以将值传递到您的查询,其中关键=自定义字段名称和值=变量 -

$args = array(
    'meta_query' => array(
     'relation' => 'AND', 
array(
      'key' => business_trade, 
'value' => $trade, 

     ), 
     array(
      'key' => business_city, 
'value' => $city, 

     ) 
    ) 
); 

全部下面的代码。

<?php 
$trade = $_GET['trade']; 
$city = $_GET['city']; 

if ($trade && $city) { 
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'meta_query' => array(
     'relation' => 'AND', 
array(
      'key' => business_trade, 
'value' => $trade, 

     ), 
     array(
      'key' => business_city, 
'value' => $city, 

     ) 
    ) 
); 
query_posts($args); 
} else { 
    query_posts('posts_per_page=4'); 
} 

if ($trade && $city) { ?> 
    <h3>Your Search For <?php echo $trade; ?> and <?php echo $city; ?></h3> 
    <?php } else { ?> 
    <h3>Title</h3> 
    <?php } if(have_posts()) : ?> 
      <?php while(have_posts()) : the_post() 
      ?> 

     <p class="no_percentage"><?php echo excerpt(15); ?> </p> 

     <span class="readmore" ><a href="<?php the_permalink(); ?>" > <?php _e('read more');?> </a> </span> 

     <?php endwhile; ?> 

     <?php else: ?> 
     <p class="notice_msg"><?php _e('Sorry, but nothing matched your search criteria.'); ?></p> 
     <?php endif; ?>