Căutare după cuvânt, categorie, etichetă, autor

19 iul. 2012, 15:48:43
Vizualizări: 20K
Voturi: 2

Pentru a crea o pagină de căutare cu funcționalități de căutare după: 1) cuvânt 2) etichetă 3) categorie 4) autor Poți utiliza următoarele metode: 1. Creează un formular de căutare personalizat în template-ul tău: <form role="search" method="get" action="<?php echo home_url('/'); ?>"> <!-- Căutare după cuvânt --> <input type="text" name="s" placeholder="Caută după cuvânt"> <!-- Căutare după categorie --> <?php wp_dropdown_categories(array( 'show_option_all' => 'Toate categoriile', 'name' => 'cat' )); ?> <!-- Căutare după etichetă --> <select name="tag"> <option value="">Toate etichetele</option> <?php $tags = get_tags(); foreach($tags as $tag) { echo '<option value="' . $tag->slug . '">' . $tag->name . '</option>'; } ?> </select> <!-- Căutare după autor --> <select name="author"> <option value="">Toți autorii</option> <?php $authors = get_users(['who' => 'authors']); foreach($authors as $author) { echo '<option value="' . $author->ID . '">' . $author->display_name . '</option>'; } ?> </select> <input type="submit" value="Caută"> </form> 2. Apoi, în fișierul search.php sau într-un template personalizat, poți procesa rezultatele: <?php $args = array( 'post_type' => 'post', 'posts_per_page' => 10 ); // Adaugă parametrii de căutare if (!empty($_GET['s'])) { $args['s'] = sanitize_text_field($_GET['s']); } if (!empty($_GET['cat'])) { $args['cat'] = intval($_GET['cat']); } if (!empty($_GET['tag'])) { $args['tag'] = sanitize_text_field($_GET['tag']); } if (!empty($_GET['author'])) { $args['author'] = intval($_GET['author']); } $query = new WP_Query($args); if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); // Afișează rezultatele get_template_part('template-parts/content', 'search'); endwhile; wp_reset_postdata(); else : echo 'Nu s-au găsit rezultate.'; endif; ?>

0
Toate răspunsurile la întrebare 2
1

Vei dori să adaugi niște butoane radio în formularul tău de căutare. Apoi adaugă un filtru la căutarea ta:

function filter_search( $query ) {
if( $query->is_search ) {
            if ( isset($_GET['tag']) )
            // modifică aici interogarea de căutare.
}
return $query;
}
add_filter( 'pre_get_posts' , 'filter_search' );

Inspirat de http://wordpress.org/support/topic/how-to-add-search-filter-by-custom-values#post-1463329

19 iul. 2012 16:26:38
Comentarii

Voi ține cont de asta în cazul în care construiesc manual șirul de interogare prin casete de radio și casete de text. Mulțumesc!

p.a. p.a.
20 iul. 2012 09:21:52
2

Dacă preferi să lași un plugin WordPress să facă treaba pentru tine, verifică Search Everything, în depozitul de plugin-uri WordPress.

Îmbunătățește funcționalitatea implicită de căutare WordPress în trei pași simpli folosind Search Everything.

Căutare WordPress mai bună în trei pași

Activează Configurează opțiunii Caută (poate sunt doar doi pași)

Opțiunile includ evidențierea căutării, căutarea în pagini, extrase, atașamente, ciorne, comentarii și câmpuri personalizate (metadata).

Ce face:

Search Everything îmbunătățește capacitatea căutării implicite WordPress, opțiuni incluse:

  • Evidențierea rezultatelor căutării
  • Căutare în toate paginile
  • Căutare în toate etichetele
  • Căutare în taxonomii personalizate (nou)
  • Căutare în toate categoriile
  • Căutare doar în paginile neprotejate cu parolă
  • Căutare în toate comentariile
  • Căutare doar în comentariile aprobate
  • Căutare în toate ciornele
  • Căutare în toate extrasele
  • Căutare în toate atașamentele (tipul de postare)
  • Căutare în toate câmpurile personalizate (metadata)
  • Excludere postări din căutare
  • Excludere categorii din căutare

[Plugin WordPress]: Search Everything

19 iul. 2012 16:44:21
Comentarii

idee grozavă, am încercat pentru căutarea în tipurile de postări personalizate și funcționează, mulțumesc!

p.a. p.a.
20 iul. 2012 09:20:52

Acest plugin este util, dar face exact opusul a ceea ce am nevoie: ia ca intrare un cuvânt și caută în etichete, categorii, titluri etc. pentru acel cuvânt. Ceea ce am nevoie eu sunt criterii precum: categoriaZ & eticheta "XYY" & titlul să conțină "House". Deci cred că acest plugin nu este utilizabil aici. Corect?

p.a. p.a.
20 iul. 2012 10:29:18