Modo semplice per cercare solo i custom post type
Sto cercando un modo per limitare la mia barra di ricerca attuale in modo che cerchi solo all'interno del mio custom post-type 'events'.
Non voglio che la ricerca indicizzi nessun altro tipo di post, solo 'events'.
Ecco la barra di ricerca:
<form id="searchform" action="http://localhost:8888/ltc" method="get">
<input class="inlineSearch" type="text" name="s" value="Inserisci una parola chiave" onblur="if (this.value == '') {this.value = 'Inserisci una parola chiave';}" onfocus="if (this.value == 'Inserisci una parola chiave') {this.value = '';}" />
<input class="inlineSubmit" id="searchsubmit" type="submit" alt="Cerca" value="Cerca" />
</form>
E il search.php:
<?php if ( have_posts() ) : ?>
<h1><?php printf( __( 'Risultati della ricerca per: %s', 'twentyten' ), '' . get_search_query() . '' ); ?></h1>
<?php
/* Esegue il loop per la ricerca per mostrare i risultati.
* Se vuoi sovrascriverlo in un tema child includi un file
* chiamato loop-search.php e quello verrà utilizzato al suo posto.
*/
get_template_part( 'loop', 'search' );
?>
(Non ho ancora modificato la pagina search.php predefinita, poiché voglio prima impostare correttamente l'indicizzazione)
Grazie

Per cercare un custom post type, puoi aggiungere alla query &post_type=events
. Per ottenere questo risultato, modifica semplicemente il tuo form in questo modo:
<form id="searchform" action="http://localhost:8888/ltc" method="get">
<input class="inlineSearch" type="text" name="s" value="Inserisci una parola chiave" onblur="if (this.value == '') {this.value = 'Inserisci una parola chiave';}" onfocus="if (this.value == 'Inserisci una parola chiave') {this.value = '';}" />
<input type="hidden" name="post_type" value="events" />
<input class="inlineSubmit" id="searchsubmit" type="submit" alt="Cerca" value="Cerca" />
</form>
Puoi farlo per qualsiasi post type (deve essere esistente altrimenti verrà scartato) e funzionerà perfettamente.

Nel mio caso, la funzionalità di ricerca funzionava perfettamente. Avevo solo bisogno di filtrare la query per cercare solo il tipo di post dei Corsi Learndash. Ecco cosa ho fatto:
// Filtra la query di ricerca per includere solo il post type 'sfwd-courses'
function fn_search_courses_only($query) {
if( $query->is_search && ! is_admin() ) {
$query->set( 'post_type', 'sfwd-courses' );
}
}
add_action( 'pre_get_posts', 'fn_search_courses_only' );

Per cercare un custom post, devi semplicemente inserire il tipo di post nella sezione del valore.
es: Il mio Custom post type è "blogpst". Ora guarda cosa ho fatto effettivamente nel secondo campo di input
<input type="hidden" name="post_type" value="blogpst" />
Vedi cosa ho fatto. Ho semplicemente inserito il tipo di post nella sezione del valore.
