Utilizarea funcției standard de căutare cu tipuri de postări personalizate

12 dec. 2016, 13:34:37
Vizualizări: 20.6K
Voturi: 4

Folosesc următorul cod HTML pentru a genera o funcție de căutare pe un site WordPress:

<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="caută&hellip;" maxlength="50" required="required" />
<button type="submit">Caută</button>
</fieldset>
</form>

Funcționează ok, dar doresc să returneze rezultate doar pentru un anumit tip de postare personalizată. Folosesc șablonul search.php din tema twentysixteen care conține următoarele:

<?php  global $wp_query; ?>
<h1 class="search-title"><?php echo $wp_query->found_posts; ?> Rezultate găsite pentru: <span><?php the_search_query(); ?></span></h1>

         <?php if ( have_posts() ) { ?>
           <ul class="results">
             <?php while ( have_posts() ) { the_post(); ?>
                <li>
                  <?php if ( has_post_thumbnail() ) { ?><div class="post-image"><a href="<?php echo get_permalink(); ?>"><?php the_post_thumbnail('thumbnail');?></a></div><?php }?>
                                    <div class="post-content">
                                    <h3><a href="<?php echo get_permalink(); ?>"><?php the_title();  ?></a></h3>
                  <p><?php echo substr(get_the_excerpt(), 0,140); ?>... <a href="<?php the_permalink(); ?>">Citește mai mult</a></p>
                                </div>
                </li>
             <?php } ?>
             </ul>
         <?php } ?>

Există vreo variabilă pe care o pot adăuga undeva pentru a returna rezultate doar pentru un anumit tip de postare? Mulțumesc

0
Toate răspunsurile la întrebare 2
2

Bine, am cercetat puțin mai mult și se pare că este destul de simplu. Trebuia doar să adaug un input ascuns în formularul de căutare. Postez asta aici pentru oricine altcineva care caută răspunsul:

<form class="search" action="<?php echo home_url( '/' ); ?>">
        <input type="search" name="s" placeholder="Căutare&hellip;">
        <input type="submit" value="Caută">
        <input type="hidden" name="post_type" value="custom-post-type">
</form>

Evident, va trebui să înlocuiți valoarea "custom-post-type" cu propriul vostru tip de postare personalizată.

12 dec. 2016 13:44:00
Comentarii

Bravo frate! Mi-ai salvat ziua!

MD. Atiqur Rahman MD. Atiqur Rahman
14 sept. 2017 14:54:33

A funcționat și la mine, iar dacă vrei să incluzi mai multe tipuri de postări, poți folosi mai multe input-uri cu numele "post_type[]", de exemplu dacă vrei să cauți atât în tipul "product" cât și "post": <input type="hidden" name="post_type[]" value="product" /><input type="hidden" name="post_type[]" value="post" />

rAthus rAthus
30 sept. 2020 16:38:11
0

O soluție mai elegantă ar fi să modificăm interogarea principală folosind acțiunea pre_get_posts.

<?php 

function my_pre_get_posts($query) {

    if( is_admin() ) 
        return;

    if( is_search() && $query->is_main_query() ) {
        $query->set('post_type', 'custom-post-type-name');
    } 

}

add_action( 'pre_get_posts', 'my_pre_get_posts' );

Această abordare nu necesită nicio modificare în șablon.

12 dec. 2016 16:53:09