Wordpress: несколько критериев поиска на пользовательских полях? - PullRequest
0 голосов
/ 14 октября 2011

Я просто основной пользователь Wordpress.Мне нужно сделать окно поиска с несколькими критериями входами (несколькими условиями) для поиска внутри различных пользовательских полей .

Например, включая следующие Пользовательские поля :

Цвет: _ ___
Размер: __ _ _
Цена: _ __
Состояние: __ _
Скидка%: _ __
Число обращений: __ _

Пользовательможет вводить 1 или более файлов.
Результат должен быть отфильтрован также для множественного ввода.
Итак, как я могу обработать это несколько условий в Query?

Это хорошо для каждого ввода .
Но, проблема с более чем 1.
Я путаю, как написать запрос для нескольких критериев (прежним способом).

Простой образец, пожалуйста.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2012

Вот пример запроса для вас, просто чтобы дать вам представление о том, как написать запрос.

$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."'"; 
}
1 голос
/ 24 сентября 2012

Если вы хотите настроить свою страницу поиска и разрешить поиск пользовательских полей, вы можете легко добиться этого.В приведенном ниже примере мы используем 2 пользовательских поля.Образец для бизнес-справочника.У каждого бизнеса есть специальное поле для своей торговли и для местоположения города.По умолчанию поиск по WordPress не поставляется с дополнительными полями формы, но вы можете следовать этому, чтобы создать настраиваемый поиск для вашего веб-сайта WordPress, который использует настраиваемые поля.

Первое, что вам нужно сделать, это добавить дополнительные поля вформа.

Мы хотим добавить два поля формы для каждого из значений.В моем случае я отслеживаю торговлю и город.

Так что вы можете перейти по этой ссылке при создании полей формы.

После того, как вы создадите поля формы и дадите им имена, перейдитев ваш файл search.php и запишите новые значения в переменную, $ _GET ['имя вашего поля'];

$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; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...