Modalitate simplă de căutare doar în tipurile de postări personalizate
Încerc să găsesc o modalitate de a restricționa bara mea de căutare actuală astfel încât să caute doar în tipul de postare personalizată 'events'.
Nu vreau ca căutarea să indexeze niciun alt tip de postare, doar 'events'.
Iată bara de căutare:
<form id="searchform" action="http://localhost:8888/ltc" method="get">
<input class="inlineSearch" type="text" name="s" value="Introduceți un cuvânt cheie" onblur="if (this.value == '') {this.value = 'Introduceți un cuvânt cheie';}" onfocus="if (this.value == 'Introduceți un cuvânt cheie') {this.value = '';}" />
<input class="inlineSubmit" id="searchsubmit" type="submit" alt="Căutare" value="Caută" />
</form>
Și search.php:
<?php if ( have_posts() ) : ?>
<h1><?php printf( __( 'Rezultatele căutării pentru: %s', 'twentyten' ), '' . get_search_query() . '' ); ?></h1>
<?php
/* Rulează loop-ul pentru căutare pentru a afișa rezultatele.
* Dacă vrei să suprascrii asta într-o temă copil, include un fișier
* numit loop-search.php și acela va fi folosit în schimb.
*/
get_template_part( 'loop', 'search' );
?>
(Nu am editat încă pagina search.php implicită, deoarece vreau doar să configurez corect indexarea mai întâi)
Mulțumesc
Pentru a căuta un tip personalizat de postare, puteți adăuga la interogare &post_type=events
. Pentru a realiza acest lucru, editați formularul astfel:
<form id="searchform" action="http://localhost:8888/ltc" method="get">
<input class="inlineSearch" type="text" name="s" value="Introduceți un cuvânt cheie" onblur="if (this.value == '') {this.value = 'Introduceți un cuvânt cheie';}" onfocus="if (this.value == 'Introduceți un cuvânt cheie') {this.value = '';}" />
<input type="hidden" name="post_type" value="events" />
<input class="inlineSubmit" id="searchsubmit" type="submit" alt="Căutare" value="Căutare" />
</form>
Puteți face acest lucru pentru orice tip de postare (trebuie să fie unul existent sau va fi ignorat) și va funcționa fără probleme.

În cazul meu, funcționalitatea de căutare funcționa perfect. Aveam nevoie doar să filtrez interogarea pentru a căuta doar postările de tip Learndash Courses. Iată ce am făcut:
// Filtrează interogarea de căutare pentru a include doar postările de tip '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' );

Pentru a căuta un post personalizat, trebuie doar să specificați tipul de post în secțiunea de valoare.
ex: Tipul meu de post personalizat este "blogpst". Acum vedeți ce am făcut în al doilea câmp de introducere
<input type="hidden" name="post_type" value="blogpst" />
Vedeți, ce am făcut. Am introdus doar tipul de post în secțiunea de valoare.
