Это не проблема, это задача)
Модератор
Юрій
(@yube)
Подсказываю: смотрите в сторону плагинов Custom Field Template, Custom Fields Search и т.п.
Спасибо Юрий, посмотрю, даже не сомневаюсь что Ваш совет как всегда дельный, но мне интересней самому код написать, (может быть это уже кем-то решалось?) то есть, я сделаю отдельную страницу на которую буду выводить результаты поиска. Поэтому интересен опыт решения. Гребнев, есть идеи как решить задачу?
Юрий, я правильно понял, $query = new WP_Query( ‘meta_key=color’ ); выдаст посты у которых вообще присутствует дополнительное поле КОЛОР???
Модератор
Юрій
(@yube)
Похоже на то, если ‘КОЛОР’ == ‘color’ 🙂
Только не выдаст, а выберет. Для собственно вывода надо эту выборку прогнать через Цикл (Loop).
это понятно, просто тут куча сопутствующих вопросов возникла, такую задачу никогда еще не решал. Но все по-порядку!
1. Как отобрать посты в которых вообще ПРИСУТСТВУЕТ определенное доп.поле?
<?php $args = array(
‘post_type’ => ‘gtcd’, // отобрали тип постов
‘meta_query’ => array( // запрос дополнительных полей
array(
‘key’ => ‘color’, // поле колор
‘value’ => ‘blue’, // значение синий
‘compare’ => ‘NOT LIKE’ // отбираем НЕ синий
),
array(
‘key’ => ‘price’, // поле цена
‘value’ => array( 20, 100 ), // должно лежать в пределах 20 — 100
‘type’ => ‘numeric’, // что это???????
‘compare’ => ‘BETWEEN’ // строковое значение должно быть между 20 и 100 поля прайс
)
)
);
$query = new WP_Query( $args );
?>
Вот как я понял эту функцию, непонятен остался тип? что это??? и еще не дошел как проверить существует ли вообще определенное доп. поле, то ч то выше описал
@valentin5 type это тип значения, по которому проводить поиск, например «20» может быть числом, а может быть и строкой, «2012-11-12» может быть строкой, а может быть и датой. В остальном всё вроде верно, несколько лет назад решал подобную задачу для сайта по недвижимости, только тогда meta_query и tax_query ещё не было 🙂
Ещё учтите, что если у вас база данных большая (миллионы записей), то это всё может тормозить, поскольку meta_query чаще всего будут делать CAST() на meta_value, соответственно индексами MySQL пользоваться не будет.
Спасибо Konstantin Kovshenin! с типом разобрался, а как выбрать посты в которых вообще существует определенное доп. поле?
и 2-е! я в процессе обнаружил у себя еще одно непонимание! вот сделали форму, заполнили переменные, если переменную не трогали — она не имеет значения и мы по ней не ищем, А ПОТОМ ВСЕ ПОЛУЧЕННЫЕ ПЕРЕМЕННЫЕ ПЕРЕДАЕМ В ФАЙЛ ОБРАБОТЧИК С ЧУТЬ ИЗМЕНЕННЫМ ШАБЛОНОМ КАТЕГОРИИ ДОПУСТИМ. А НАХОДЯСЬ В ЭТОМ САМОМ РЕЗУЛЬТАТЕ ПОИСКА ОПЯТЬ ПОСЕТИТЕЛЬ ЗАПОЛНЯЕТ ФОРМУ, КАК ВЫЗЫВАТЬ ОБРАБОТЧИК???