Modalitate simplă de căutare doar în tipurile de postări personalizate

28 sept. 2011, 20:03:30
Vizualizări: 36.3K
Voturi: 6

Î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

2
Comentarii

pentru mai multe tipuri de postări: <input type="hidden" name="post_type[]" value="stories"/> <input type="hidden" name="post_type[]" value="products"/> https://wordpress.stackexchange.com/questions/12723/searching-multiple-custom-post-types-and-pages

Phil Sav Phil Sav
26 mar. 2018 08:45:48

Ca o completare la răspunsul lui Hansy, poți consulta postarea mea aici: https://wordpress.stackexchange.com/questions/26372/search-only-pages-if-on-page/29060#29060 pentru a folosi butoane radio și a oferi utilizatorilor opțiunea de a alege ce doresc să caute.

Brian Fegter Brian Fegter
28 sept. 2011 21:07:01
Toate răspunsurile la întrebare 3
1
13

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.

28 sept. 2011 20:29:11
Comentarii

Cum ar funcționa acest lucru pentru mai multe tipuri de postări (post_types)?

kneidels kneidels
29 feb. 2016 13:37:31
0

Î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' );
18 nov. 2024 09:07:10
0

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.

17 feb. 2019 18:58:08