Căutare în multiple tipuri de postări personalizate și pagini
Folosesc metoda lui bainternet pentru căutarea în post_types personalizate și funcționează excelent. Totuși, recent mi s-a cerut să returnez mai mult de un tip "specific" de postare și eventual pagini individuale pentru o secțiune de suport pe site-ul nostru.
Am crezut că adăugarea de câmpuri ascunse suplimentare va rezolva problema, dar nu a funcționat. Și nu am nicio idee cum va funcționa acest lucru cu paginile.
Orice ajutor ar fi apreciat!
În template:
<form action="http://apollo.website.net/" id="searchform" method="get" role="search">
<div><label for="s" class="screen-reader-text">Caută:</label>
<input type="text" id="s" name="s" value="">
<input type="submit" value="Caută" id="searchsubmit">
<input type="hidden" name="post_type" value="software" />
</div>
</form>
În functions.php:
/* Interogări personalizate de căutare */
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;
}

schimbă
<input type="hidden" name="post_type" value="software" />
în
<input type="hidden" name="post_type[]" value="software" />
<input type="hidden" name="post_type[]" value="books" />
trebuie să plec dar ar trebui să funcționeze, doar adaugă câte câmpuri ascunse ai nevoie pentru fiecare tip de postare

Funcționează excelent, mulțumesc! Există o modalitate de a obține și pagini legate?

Valorile de intrare sub formă de array nu vor funcționa cu metoda GET
, aș fi surprins dacă acel cod face ceea ce crezi tu...

Puteți face asta pentru a comuta între un singur tip de set și orice..
<input type="hidden" name="post_type" value="software" />
<label for="post_type">Caută tot</label>
<input type="checkbox" name="post_type" value="any" />
Nebifat caută în tipul specificat, bifat setează tipul postării la orice..

Pentru mine funcționează această soluție (la fel ca cea a lui Bainternet, dar fără "[]" după "post_type"):
<input type="hidden" name="post_type" value="photo">
<input type="hidden" name="post_type" value="video">
Și pentru a obține un șablon specific pentru rezultatele de căutare bazate pe tipul de postare (în 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');
