Te-ai întrebat vreodată cum poți limita rezultatele căutării la anumite tipuri de postări? Nu este foarte greu. Am arătat deja cum să dezactivezi funcția de căutare în WordPress modificând fișierul functions.php. Acum vom face același lucru, cu excepția faptului că vom filtra rezultatele căutării.
Deschideți fișierul functions.php și adăugați următorul cod:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('post','page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
Observați linia care spune
$query->set('post_type',array('post','page'));
Puteți filtra rezultatele căutării modificând valorile din variabila array. În prezent, este setat să afișeze postări și pagini, dar îl puteți modifica pentru a afișa orice doriți.

Ankit manandgar
cum pot obține rezultatele căutării doar după titlul postării?
Anna
Mulțumesc pentru acest cod – a funcționat, deși ultima actualizare a fost în 2013! Tema mea folosește și o căutare instantanee și aș dori să limitez și acolo rezultatele. Cum aș putea face asta?
Sparsh Goyal
Tema mea actuală afișează articole cu câteva rânduri de început pentru termenul/cuvântul căutat. Vreau să o personalizez pentru a afișa paragraful care conține termenul/cuvântul căutat în rezumatul articolului. Cu alte cuvinte, vreau să afișez textul relevant în rezumatul articolului, nu paragraful de început în rezultatele căutării. Poate cineva să mă ajute cu asta....
Azamat
Salut,
Cum pot limita rezultatele căutării pentru anumite tipuri de postări ȘI termeni specifici de taxonomie personalizată?
Steven
Am o funcție ușoară în fișierul themes functions.php, care ar trebui să filtreze doar Postările după un termen de căutare... când caut ceva acum, apare eroarea HTTP 500 „Site-ul nu poate afișa pagina”. Cineva are o idee, ce este greșit cu funcția mea?
function searchFilter($query) { if ($query->is_search) { wp_reset_query(); $args = array ( ‘s’ => $_GET[‘s’] ); query_posts( $args ); } } add_filter(‘pre_get_posts’, ‘searchFilter’);
Greg
Acest lucru restricționează toate formularele de căutare la tipul de postare personalizat – inclusiv formularul de căutare din bara laterală, care trebuie să returneze toate rezultatele. Acest lucru funcționează pentru mine:
funcție searchfilter($query) {
if ($query->is_search && !is_admin() ) {
if(isset($_GET[‘post_type’])) {
$type = $_GET[‘post_type’];
if($type == ‘book’) {
$query->set(‘post_type’,array(‘book’));
}
}
}
return $query;
}
add_filter(‘pre_get_posts’,’searchfilter’);
Jonathan Joosten
Mulțumesc pentru ajutor, am îmbunătățit codul dvs. astfel încât oamenii să poată căuta doar post_types permise.
funcție searchfilter($query)
{
if ($query->is_search && !is_admin() )
{
if(isset($_GET[‘post_type’])) {
$types = (array) $_GET[‘post_type’];
$allowed_types = get_post_types(array(‘public’ => true, ‘exclude_from_search’ => false));
foreach($types as $type)
{
if( in_array( $type, $allowed_types ) ) { $filter_type[] = $type; }
}
if(count($filter_type))
{
$query->set(‘post_type’,$filter_type);
}
}
}
}
add_filter(‘pre_get_posts’,’searchfilter’);
Dan Sz.
Cum este implementat acest lucru? Dacă am înțeles corect comentariul lui Greg, dorim un singur formular care este limitat la un tip de postare, păstrând în același timp căutarea implicită intactă pentru alte zone ale site-ului.
Întreb deoarece un site la care lucrez are nevoie de o „Bibliotecă de resurse” căutabilă, pe care aș dori să o construiesc fără a compromite funcționalitatea normală de căutare.
Tadeu
Salut, este posibil să limitezi căutarea doar la titlu, categorie și etichete ale postărilor?
Sandeep
Salut,
Nu pot restricționa paginile în filtrul de căutare.
Am nevoie doar de căutare în postări, nu în pagini.
$query->set(‘post_type’,array(‘post’));
Aceasta afișează și paginile.
Jared
Doar o notă de adăugat la acest lucru, nu este necesar să returnezi $query.
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Peter
Mulțumesc pentru pontul excelent!
Echipa WPBeginner
Funcționalitatea de căutare WordPress nu este grozavă în găsirea conținutului.
Nick
Am folosit acest cod pentru a-mi restricționa rezultatele căutării la Pagini, nu la Articole. A funcționat în acest sens, însă pare să caute doar numele paginilor, spre deosebire de conținut. De exemplu, dacă un utilizator caută „prețuri”, pagina Prețuri va fi un rezultat, dar dacă caută „preț” sau „cost” (ambele fiind cuvinte de pe pagina de prețuri), nu se găsește nimic. Lipsește un fragment de cod?
emre
Hi,
I have a question and I couldn’t get a solution since last month.
I have lost of categories, pages and re-directions in my blog so my search box finds many unnecessary results when you try to search something. I want to customize my search.php for only categories part. In other words, we you search something, the results should be only from categories sections. So I will be get rid of redundant & duplicated results. My current codes are as below…Please help me
sam
Cum să limitezi după o categorie specifică? mulțumesc
Suport WPBeginner
Sam, te rog să consulți ghidul nostru despre cum să adaugi un filtru de căutare de taxonomii în WordPress.
Admin
Hasan Gad Allah
Thank you , i was looking for that code (Y)
Felix
Există o problemă cu fragmentul dvs.:
Limitează rezultatele căutării în backend, ar trebui să o încadrați cu:
dacă ( !is_admin() ) {
// fragment
}
bloggingfuture
Acesta este un cod destul de valoros pentru WordPress. Mulțumesc!
Alan Hughes
Deci, cum ați aplica acest lucru unei bare de căutare specifice? Nu se aplică filtrul la fiecare bară de căutare de pe site-ul dvs., nu-i așa?
goJohnnyGo
Ați reușit să aflați cum să aplicați acest lucru unor bare de căutare specifice (nu universal)?
Personal editorial
Da, avem un articol aici:
https://www.wpbeginner.com/wp-tutorials/how-to-create-advanced-search-form-in-wordpress-for-custom-post-types/
Admin
scotte_sprott
Cum pot limita rezultatele căutării pentru a afișa doar pagini?
wpbeginner
@scotte_sprott În array, păstrează doar page și elimină posts.