Фильтр поиска WordPress по произвольному полю

Кто-нибудь знает, как изменить поиск WordPress для фильтрации по запросам? Переменные запроса — это настраиваемые поля. Например, у меня есть настраиваемый тип сообщений «книги», и я хочу, чтобы пользователи могли выполнять поиск на основе настраиваемого поля «book_author».

URL-адрес после того, как я нажму кнопку поиска, выглядит так:

?search_filter=book_author&s=tolkien&post_type=book

Любая помощь будет принята с благодарностью.


person Jason Ellis    schedule 23.03.2014    source источник


Ответы (1)


Вы захотите сделать что-то подобное в своем PHP-коде на странице поиска.

$args = array(
              'post_type' => 'book',
              'order' => 'asc',
              'meta_query' => array(
                  array(
                      'key' => $_GET['search_filter'],
                      'value' => $_GET['s'],
                      'compare' => 'IN',
                      )
                  )
              );
$loop = new WP_Query( $args );

конечно, вы можете захотеть защитить код от SQL-инъекций и т. д. и т. д., но это дает вам отправную точку для создания страницы, которая будет делать то, что вы хотите.

Я бы рекомендовал прочитать больше о WP_Query, особенно о сортировке и параметрах.

person Stewartside    schedule 23.03.2014
comment
Большое спасибо! В итоге я пошел другим путем, но это определенно направило меня в правильном направлении. Я еще не полностью протестировал WP_Query, но я прочитаю его для дальнейшего использования. - person Jason Ellis; 24.03.2014
comment
Абсолютно! Ваш метод отлично сработал после прочтения WP_Query. Еще раз спасибо! - person Jason Ellis; 25.03.2014