Căutare în multiple tipuri de postări personalizate și pagini

22 mar. 2011, 18:26:30
Vizualizări: 14.8K
Voturi: 10

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;
}
0
Toate răspunsurile la întrebare 3
3
19

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

22 mar. 2011 19:05:38
Comentarii

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

Zach Shallbetter Zach Shallbetter
22 mar. 2011 19:09:26

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 t31os
22 mar. 2011 19:20:33

Greșeala mea, funcționează atunci când este folosit împreună cu filtrul din întrebarea anterioară a utilizatorului, ignoră comentariul de mai sus.

t31os t31os
22 mar. 2011 19:25:07
1

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..

22 mar. 2011 19:30:10
Comentarii

Acesta este doar un sfat suplimentar pentru a completa răspunsul lui Bainternet. ;)

t31os t31os
22 mar. 2011 19:30:44
0

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');
27 feb. 2019 22:18:03