0

我只是一个基本的 Wordpress 用户。我需要制作带有多个条件输入(多个条件)的搜索框,以便在各种自定义字段中进行搜索。

例如包括以下自定义字段

颜色:_ ___
尺寸:
_ _ _
价格:_ __
健康)状况:
_ _
折扣百分比:_ __
命中数:
_ _

用户可以输入1 个或多个字段。
结果也应针对多个输入进行过滤。
那么,我该如何处理 Query 中的多个条件呢?

每个输入都可以。
但是,超过 1 的问题。
我很困惑如何为多个条件编写查询(以以前的方式)。

请提供一个简单的示例。

4

2 回答 2

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."'"; 
}
于 2012-09-24T11:43:41.543 回答
1

如果您想自定义搜索页面并允许搜索自定义字段,您可以轻松实现此目的。在下面的示例中,我们使用了 2 个自定义字段。该示例用于业务目录。每个企业都有一个自定义字段用于其贸易及其所在城市。默认的 wordpress 搜索不附带额外的表单字段,但您可以按照此为使用自定义字段的 WordPress 网站创建自定义搜索。

您需要做的第一件事是将附加字段添加到表单中。

我们要做的是为每个值添加两个表单字段。就我而言,我正在跟踪贸易和城市。

因此,您可以访问此链接以创建表单字段。

创建表单字段并为其命名后,转到 search.php 文件并将新值捕获到变量 $_GET['your field name'];

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

然后,您可以将这些值传递给您的查询,其中键 = 自定义字段名称和值 = 变量 –</p>

$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; ?>
于 2012-09-24T11:33:27.130 回答