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?
Zach Shallbetter
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...
t31os
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');