Ricerca in più tipi di post personalizzati e pagine

22 mar 2011, 18:26:30
Visualizzazioni: 14.8K
Voti: 10

Sto utilizzando il metodo di bainternet per cercare nei custom post_types e funziona benissimo. Recentemente però mi è stato chiesto di restituire più di un tipo di post "specifico" e possibilmente anche pagine individuali per una sezione di supporto del nostro sito.

Pensavo che aggiungere campi hidden aggiuntivi potesse funzionare, ma non è stato così. E non ho idea di come far funzionare il tutto con le pagine.

Qualsiasi aiuto sarebbe apprezzato!


Nel template:

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

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

In functions.php:

/* Query di ricerca personalizzate */
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
Tutte le risposte alla domanda 3
3
19

modifica

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

con

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

devo scappare ma dovrebbe funzionare, basta aggiungere tutti i campi nascosti che ti servono per ogni tipo di post

22 mar 2011 19:05:38
Commenti

Funziona benissimo, grazie! C'è un modo per fargli restituire anche le pagine correlate?

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

I valori di input in array non funzioneranno con il metodo GET, sarei sorpreso se quel codice stesse facendo realmente ciò che pensi..

t31os t31os
22 mar 2011 19:20:33

Mio errore, funziona quando usato insieme al filtro della domanda precedente dell'utente, ignora il commento sopra.

t31os t31os
22 mar 2011 19:25:07
1

Puoi farlo in questo modo per alternare tra un tipo di post specifico e qualsiasi tipo..

<input type="hidden" name="post_type" value="software" />
<label for="post_type">Cerca in tutti</label>
<input type="checkbox" name="post_type" value="any" />

Quando non è selezionato cerca nel tipo specifico, quando è selezionato imposta il tipo di post su "qualsiasi"..

22 mar 2011 19:30:10
Commenti

Questo è solo un suggerimento aggiuntivo per integrare la risposta di Bainternet. ;)

t31os t31os
22 mar 2011 19:30:44
0

Per me funziona questa soluzione (la stessa di Bainternet, ma senza "[]" dopo "post_type"):

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

E per ottenere un template specifico per i risultati di ricerca basato sul tipo di post (su 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