поиск по произвольным полям
Заметки по Wordpress

Сustom fields – создаем поиск по произвольным полям

Сustom fields - создаем поиск по произвольным полям

С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); ?>

” title=”< ?php the_title_attribute(); ?>“> Подробнее

< ?php endwhile; ?>
< ?php else : ?>

Извините, ничего не найдено

< ?php endif; ?>

< ?php wp_reset_query(); ?>
[/crayon]

Во всем получившемся коде на странице filtr.php заменяем ИМЯ ПОЛЯ на нужное вам имя пользовательского поля.
А вместо ID_КАТЕГОРИИ указываем номер нужной вам категории, если надо сделать фильтр по всем категория, то удаляем данную аргумент.

 

На этом все. у Вас должна получиться рабочая страничка с фильтром по пользовательским полям.

[/spoiler]

Если что не получается или непонятно пишите в комментарии.

Новые посты

Реклама и баннеры в wordpress после заголовков

Гордеев Игорь

Замена логотипа wordpress

Гордеев Игорь

Защита от спама в WordPress без плагина

Гордеев Игорь

16 комментариев

Сергей 30.01.2012 / 00:52

Здравствуйте.
Как сделать расширенный поиск на wordpress для нескольких фильтров и с возможностью выбора посетителем категорий? Например, для агентства путешествий. Страна, цена, дата заезда, количество звезд и т.п.?

Ответить
Гордеев Игорь 31.01.2012 / 00:29

Расширенными возможностями функцией я еще не занимался.

Ответить
olga 06.06.2012 / 01:35

я тоже это хочу знать! Вы уже нашли ответ? Подскажите пожалуйста”” 😳

Ответить
Гордеев Игорь 06.06.2012 / 14:52

Нет, я не занимался этим вопросом.

Ответить
Алексей 25.03.2012 / 12:21

Статья отличная, то, что искал!

Ответить
Евгений 03.08.2012 / 16:28

Вот я тоже пытаюсь найти возможность сделать расширенный поиск на wordpress для нескольких фильтров. Если решение будет, то обязательно выкладывайте в новых статьях!

Ответить
Гордеев Игорь 03.08.2012 / 16:31

Хорошо.

Ответить
Ильдар 14.10.2012 / 01:21

Подробно и понятно все расписали, очень круто. У буржуев пытался найти решение для нескольких произвольных полей, но там тоже в основном по 1 полю. Поэтому подписался на ваш блог, жду с нетерпением новой статьи 🙂

Ответить
Михаил 28.11.2012 / 12:24

Не работает код!!! На видео когда вы заменяете меняется 12 раз… в выложеном коде только девять раз что то напутано с “counties” и “ИМЯ ПОЛЯ” пытался я менять по разному меня почемуто выкидывает при нажатие поиск на index.php

Ответить
Гордеев Игорь 28.11.2012 / 19:26

Попробуйте сейчас.

Ответить
Inco 29.11.2012 / 15:05

Это наверное для интернет-магазинов полезная функция

Ответить
Станислав 03.01.2013 / 01:36

Поиск по нескольким произвольным полям – дело не хитрое. Существует хороший плагин WP Searh Custom Field. Но если поиск ведется сразу по нескольким (скажем, по 10)произвольным полям, то процесс затягивает о-о-чень надолго. Может быть, кто-нибудь знает решение этой проблемы?

Ответить
Станислав 28.01.2013 / 01:42

Кстати, существует еще один хороший плагин для поиска по нескольким custom fields – WP Query Search Filter. Но у него другой недостаток: форма поиска – только dropdown menu, в то время, как мне необходимо использование и radio, и checkbox, и slider… остается надеяться только, что эти возможности появятся в следующей версии.

Ответить
Иван 30.03.2016 / 20:22

Спасибо за подсказку с плагином! плагин WP Query Search Filter жив и он обновляется! появились и радиокнопки, и чекбоксы. Я очень долго искал плагин для расширенного поиска. Находил только платный вариант. Вот, оказывается есть и бесплатный )

Ответить
Елена 18.06.2014 / 23:18

Поиск по произвольным полям работает, но столкнулась с проблемой. При разбиении на страницы результатов поиска, 2 и последующие страницы не открываются. Причем навигация в данном случае не работает никакая, ни стандартная, ни с плагинами. Подскажите как решить данную проблему, 2 дня уже бьюсь, все способы описанные в интернете перепробовала, не работает и всё.

Ответить
Константин 09.03.2016 / 14:26

Удачно я на ваш сайт набрел! как раз такую информацию искал

Ответить

Оставить комментарий