Поиск нескольких пользовательских типов записей и страниц


Я использую метод bainternet для поиска пользовательских типов сообщений , и он отлично работает. Однако недавно меня попросили вернуть несколько "конкретных" типов сообщений и, возможно, отдельные страницы для раздела поддержки на нашем сайте.

Я думал, что добавление дополнительных скрытых полей сделает это, но это не сработало. И я понятия не имею, как это будет работать со страницами.

Любая помощь будет признательна!


В шаблон:

<form action="http://apollo.website.net/" id="searchform" method="get" role="search">
    <div><label for="s" class="screen-reader-text">Search for:</label>
    <input type="text" id="s" name="s" value="">
    <input type="submit" value="Search" id="searchsubmit">

    <input type="hidden" name="post_type" value="software" />
    </div>
</form>

В functions.php :

/* Custom Search Queries */
function SearchFilter($query) {
$post_type = $_GET['post_type'];
if (!$post_type) {
    $post_type = 'any';
}
if ($query->is_search) {
    $query->set('post_type', $post_type);
};
return $query;
} 
Author: Community, 2011-03-22

3 answers

Изменение

<input type="hidden" name="post_type" value="software" />

До

<input type="hidden" name="post_type[]" value="software" />
<input type="hidden" name="post_type[]" value="books" />

Мне нужно бежать, но это должно сработать, просто добавьте столько скрытых полей, сколько вам нужно для каждого типа записи

 15
Author: Bainternet, 2011-03-22 17:05:38

Вы могли бы сделать это так, чтобы переключаться между типом сингулярного набора и любым..

<input type="hidden" name="post_type" value="software" />
<label for="post_type">Search all</label>
<input type="checkbox" name="post_type" value="any" />

Непроверенный выполняет поиск по вашему определенному типу, флажок устанавливает тип записи на любой..

 2
Author: t31os, 2011-03-22 17:30:10

Для меня работает это решение (такое же, как у Bainternet, но без "[]" после "post_type"):

  <input type="hidden" name="post_type" value="photo">
  <input type="hidden" name="post_type" value="video">

И получить конкретный шаблон для результатов поиска на основе типа(ов) публикации (на functions.php ):

function search_template_chooser($template) {
  global $wp_query;
  $post_type = get_query_var('post_type');
  if( $wp_query->is_search && $post_type == 'photo' || $wp_query->is_search && $post_type == 'video' ) {
    return locate_template('search-media.php');
  }
  return $template;
}

add_filter('template_include', 'search_template_chooser');
 0
Author: Pedro Muraki, 2019-02-27 20:18:03