Сustom fields или пользовательские поля по русски являются отличной функцией в WordPress . Они позволяют хранить любую дополнительную информацию (метаданные) о посте.
Когда я только начинал использовать WordPress, я и не представлял насколько мощным дополнением к сайту они могут быть.
В этом видеоуроке мы добавим возможность поиска ваших постов по пользовательским поля, хоть это и не предусмотрено, встроенной функцией поиска WordPress. Она не ищет по значениям пользовательских полей.
[spoiler name=”Необходимые данныеДля открытия – нажмите“]
1. Создание страница поиска.
Открываем page.php в вашей теме и сохранить его копию как новый файл. Я назвал новый шаблон страницы filtr.php.
Дайте имя в файле шаблона, добавив следующую строчку в самом начале:
[crayon lang=’html’]Template Name: Фильтр[/crayon]
Теперь, когда вы создали новую страницу в вашей теме, заходим в админ панель и создаем новую страницу. Например “Поиск” и выбираем появившийся в списке доступных шаблонов нашу созданную страничку.
2. Создаем фильтр в виде выпадающего списка
Чтобы создать форму, которая позволит пользователям фильтровать посты, добавляем этот код, в filtr.php, туда где бы вы хотели видеть выпадающий список :
[crayon]
[/crayon]
3. Отображение результатов поиска.
Теперь,когда мы фактически создали фильтр поиска, нам надо как-то вывести этот результат. Для этого мы добавляем следующий код, в filtr.php после кода формы фильтра:
[crayon lang=’php’]
< ?php
$counties = $_GET['ИМЯ ПОЛЯ'];
if ($counties) {
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args=array(
'cat'=>19,
‘meta_value’ => $counties,
‘paged’=>$paged,
);
query_posts($args);
} else {
query_posts(‘cat=19&posts_per_page=4’);
}
if ($counties) { ?>
Результат поиска по – < ?php echo $counties; ?>
< ?php } else { ?>
Недавно добавленные
< ?php } if (have_posts()) : while (have_posts()) : the_post(); $event_ИМЯ ПОЛЯ = get_post_meta($post->ID, ‘ИМЯ ПОЛЯ’, true); ?>
< ?php endwhile; ?>
< ?php else : ?>
Извините, ничего не найдено
< ?php endif; ?>
< ?php wp_reset_query(); ?>
[/crayon]
Во всем получившемся коде на странице filtr.php заменяем ИМЯ ПОЛЯ на нужное вам имя пользовательского поля.
А вместо ID_КАТЕГОРИИ указываем номер нужной вам категории, если надо сделать фильтр по всем категория, то удаляем данную аргумент.
На этом все. у Вас должна получиться рабочая страничка с фильтром по пользовательским полям.
[/spoiler]
Если что не получается или непонятно пишите в комментарии.
16 комментариев
Здравствуйте.
Как сделать расширенный поиск на wordpress для нескольких фильтров и с возможностью выбора посетителем категорий? Например, для агентства путешествий. Страна, цена, дата заезда, количество звезд и т.п.?
Расширенными возможностями функцией я еще не занимался.
я тоже это хочу знать! Вы уже нашли ответ? Подскажите пожалуйста”” 😳
Нет, я не занимался этим вопросом.
Статья отличная, то, что искал!
Вот я тоже пытаюсь найти возможность сделать расширенный поиск на wordpress для нескольких фильтров. Если решение будет, то обязательно выкладывайте в новых статьях!
Хорошо.
Подробно и понятно все расписали, очень круто. У буржуев пытался найти решение для нескольких произвольных полей, но там тоже в основном по 1 полю. Поэтому подписался на ваш блог, жду с нетерпением новой статьи 🙂
Не работает код!!! На видео когда вы заменяете меняется 12 раз… в выложеном коде только девять раз что то напутано с “counties” и “ИМЯ ПОЛЯ” пытался я менять по разному меня почемуто выкидывает при нажатие поиск на index.php
Попробуйте сейчас.
Это наверное для интернет-магазинов полезная функция
Поиск по нескольким произвольным полям – дело не хитрое. Существует хороший плагин WP Searh Custom Field. Но если поиск ведется сразу по нескольким (скажем, по 10)произвольным полям, то процесс затягивает о-о-чень надолго. Может быть, кто-нибудь знает решение этой проблемы?
Кстати, существует еще один хороший плагин для поиска по нескольким custom fields – WP Query Search Filter. Но у него другой недостаток: форма поиска – только dropdown menu, в то время, как мне необходимо использование и radio, и checkbox, и slider… остается надеяться только, что эти возможности появятся в следующей версии.
Спасибо за подсказку с плагином! плагин WP Query Search Filter жив и он обновляется! появились и радиокнопки, и чекбоксы. Я очень долго искал плагин для расширенного поиска. Находил только платный вариант. Вот, оказывается есть и бесплатный )
Поиск по произвольным полям работает, но столкнулась с проблемой. При разбиении на страницы результатов поиска, 2 и последующие страницы не открываются. Причем навигация в данном случае не работает никакая, ни стандартная, ни с плагинами. Подскажите как решить данную проблему, 2 дня уже бьюсь, все способы описанные в интернете перепробовала, не работает и всё.
Удачно я на ваш сайт набрел! как раз такую информацию искал