Форма расширенного поиска с фильтрами для пользовательского taxonomies и пользовательских полей

Я хотел бы создать форму расширенного поиска для определенного пользовательского типа сообщения, имение фильтров для пользовательского сообщения вводит пользовательские поля, пользовательский taxonomies, и для отдельного пользовательского сообщения вводит свойства (поля и taxonomies), который будет ссылками на первый тип сообщения с помощью пользовательского поля отношений.

Я недавно начался с пользовательскими типами сообщения WPs, полями и taxonomies, я люблю его до сих пор, но сделать лучший из него я хотел бы смочь искать его правильно. Я должен сделать это вручную? Если так, как?

PS. Если это имеет значение, я использую плагины: Усовершенствованные Пользовательские Поля и Пользовательский Тип Сообщения UI.

Ниже я копировал пример того, как фильтрация посмотрела бы и как она могла бы коснуться типов сообщения выше.

wordpress custom search form filtered by custom fields and custom taxonomies

30
05.12.2014, 23:41
4 ответа

Попробуйте плагин Средства выбора Таксономии вместе с Relevanssi. Уничтожающая комбинация.

http://www.squidoo.com/taxonomy-picker-wordpress-plugin http://wordpress.org/extend/plugins/relevanssi/

2
19.02.2020, 21:54

Смотрите на плагин Relevanssi, он мог бы сделать то, что Вы ищете: http://wordpress.org/extend/plugins/relevanssi/

0
19.02.2020, 21:54
  • 1
    Это не удовлетворяет подходу, в котором я нуждаюсь (с определенными фильтрами), но это - очень интересный плагин, это похоже на большую замену для поисковой функции по умолчанию, большое спасибо за указание на него. –  pax 10.01.2012, 19:37

Я думаю что-то вроде этого, что Вы лучше всего записали бы сами.

Смотрите на: http://www.catalysthomes.co.uk/homes-for-sale/

Свойства загружаются в CPT, и у меня есть свой собственный поиск на боковой панели. Из того поиска его поиск многих вещей, таких как taxonomies, пользовательские поля и упорядочивание ценой даты и т.д.

Таким образом, как я достигаю этого? Я отправляю форму шаблону страницы, и оттуда я имею дело с данными сообщения и создаю новый WP_query на основе критериев поиска. Я использую сессии для хранения поисковых переменных так, чтобы я мог нумеровать страницы результаты.

WP_Query очень мощен. Смотрите: http://codex.wordpress.org/Class_Reference/WP_Query

Там можно использовать meta_query запрашивать несколько пользовательских полей и использования tax_query для запросов taxonomies плюс существует больше. Ниже то, как мой создается для давания Вам общее представление.

Шаблонный файл:

  <?php
  $temp = $wp_query;
  $wp_query = NULL;
  $args = array();
  ?>

  <?php include("functions/Homes-for-sale/propertyrawresults.php"); ?>
  <?php include("functions/Homes-for-sale/propertysearchresults.php"); ?>

  <?php
  $args['post_type'] = "homes-for-sale";
  $args['showposts'] = 10;
  $args['paged'] = $paged;
  $wp_query = new WP_Query($args);
  ?>

  <?php include("functions/Homes-for-sale/propertylistlayout.php"); ?>

Необработанные результаты

<?php
if($_POST['sortby']) {
    $_SESSION['prop_selectedsortby'] = $_POST['sortby'];
}

switch($_SESSION['prop_selectedsortby']) {
    case "name-asc": $args['order'] = "ASC"; $args['orderby'] = "title"; break;
    case "name-desc": $args['orderby'] = "title"; break;
    case "price-asc": $args['order'] = "ASC"; $args['orderby'] = "meta_value_num"; $args['meta_key'] = "chb_homes_for_sale_specifics_fmv"; break;
    case "price-desc": $args['orderby'] = "meta_value_num"; $args['meta_key'] = "chb_homes_for_sale_specifics_fmv"; break;
    case "date-asc": $args['order'] = "ASC"; break;
    default: /* No need to set arguments here as wp query defaults */ break;
}

$selectedsortby[$_SESSION['prop_selectedsortby']] = " selected=\"selected\"";
?>

Результаты поиска

<?php
if( ! empty( $_SESSION['s_property_ptype'] ) ) {
    $args['meta_query'][] = array(
        'key' => 'chb_homes_for_sale_types_nbrs',
        'value' => $_SESSION['s_property_ptype']
    );
}

if( ! empty( $_SESSION['s_property_development'] ) ) {
    $args['meta_query'][] = array(
        'key' => 'chb_homes_for_sale_ofdevelopment',
        'value' => $_SESSION['s_property_development']
    );
}

if( isset( $_SESSION['s_property_area'] ) && 0 != $_SESSION['s_property_area'] ) {
    $args['tax_query'][] = array(
        'taxonomy' => 'areas',
        'field' => 'id',
        'terms' => array( (int) $_SESSION['s_property_area'] ),
    );
}

$args['meta_query'][] = array(
    'key' => 'chb_homes_for_sale_specifics_bedrooms',
    'value' => $_SESSION['s_property_bedrooms_min'],
    'compare' => '>=',
    'type' => 'SIGNED'
);

$args['meta_query'][] = array(
    'key' => 'chb_homes_for_sale_specifics_bedrooms',
    'value' => $_SESSION['s_property_bedrooms_max'],
    'compare' => '<=',
    'type' => 'SIGNED'
);

$args['meta_query'][] = array(
    'key' => 'chb_homes_for_sale_specifics_bathrooms',
    'value' => $_SESSION['s_property_bathrooms_min'],
    'compare' => '>=',
    'type' => 'SIGNED'
);

$args['meta_query'][] = array(
    'key' => 'chb_homes_for_sale_specifics_bathrooms',
    'value' => $_SESSION['s_property_bathrooms_max'],
    'compare' => '<=',
    'type' => 'SIGNED'
);

$args['meta_query'][] = array(
    'key' => 'chb_homes_for_sale_specifics_fmv',
    'value' => $_SESSION['s_property_min_price'],
    'compare' => '>=',
    'type' => 'SIGNED'
);

$args['meta_query'][] = array(
    'key' => 'chb_homes_for_sale_specifics_fmv',
    'value' => $_SESSION['s_property_max_price'],
    'compare' => '<=',
    'type' => 'SIGNED'
);
?>

Расположение списка Просто стандартный цикл WP для показа выборок сообщения и информации.

16
19.02.2020, 21:54
  • 1
    Привет Brady, спасибо за этот пример. Я мог попросить, чтобы Вы, если это возможно, совместно использовали форму? В нем, к чему URL является Вашим представлением его? –  salocin 28.06.2012, 10:46
  • 2
    @salocin - Та информация может быть получена путем рассмотрения источника страницы на данном URL в ответе –  Brady 28.06.2012, 11:06
  • 3
    благодарит Brady, таким образом, URL шаблона страницы? Спасибо, для которого Tom –  salocin 28.06.2012, 14:49
  • 4
    Форма находится на catalysthomes.co.uk. Можно просмотреть источник и видеть, как форма работает –  Brady 28.06.2012, 16:15
  • 5
    Вы проверка, чтобы видеть, имеют ли пользовательские taxonomies сообщения с ними как пользовательское поле? Как точно Вы заполняете поисковую форму? @Brady спасибо –  Phil Hudson 19.02.2016, 08:00

Если кто-либо испытывает затруднения при реализации решения Brady выше (как я сделал), вот подсказка: кажется, что WordPress имеет некоторые проблемы с передающими данными сессии, таким образом, необходимо будет, вероятно, сделать что-то дополнительное, чтобы заставить его работать правильно. Вопросы обсуждаются здесь

В functions.php:

function init_sessions() {
  if (!session_id()) {
  session_start();
 }
}
add_action('init', 'init_sessions');

В Вашем шаблоне:

/**
* Enable sessions
*/
if (!session_id())
session_start();

Для меня устанавливающий "Простую Сеансовую поддержку Peter Wooster" плагин добился цели.

0
19.02.2020, 21:54
  • 1
    Привет Steve. Спасибо за регистрацию Вашего первого ответа здесь. Довольный иметь Вас в WPSE. Для дальнейшего использования ответы не должны вертеться полностью вокруг внешней ссылки. Если ссылка отключена, Ваш ответ становится мягким. Вы возражали бы обновлять свой ответ с несколькими демонстрационными отрывками соответствующих норм? –  Brian Fegter 16.09.2012, 07:09

Теги

Похожие вопросы