Hiç arama sonuçlarınızı belirli gönderi türleriyle nasıl sınırlayabileceğinizi merak ettiniz mi? Çok zor değil. functions.php dosyasını değiştirerek WordPress'te arama özelliğini nasıl devre dışı bırakacağınızı zaten gösterdik. Şimdi aynı şeyi yapacağız, ancak arama sonuçlarımızı filtreleyeceğiz.
functions.php dosyanızı açın ve aşağıdaki kodları ekleyin:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('post','page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
Şunu belirten satıra dikkat edin
$query->set('post_type',array('post','page'));
Dizi değişkenindeki değerleri değiştirerek arama sonuçlarını filtreleyebilirsiniz. Şu anda gönderileri ve sayfaları gösterecek şekilde ayarlanmış durumda, ancak istediğiniz herhangi bir şeyi gösterecek şekilde değiştirebilirsiniz.


Ankit manandgar
arama sonuçlarını yalnızca gönderi başlığına göre nasıl alabilirim?
Anna
Bu kod için teşekkürler – işe yaradı, ancak son güncellemeniz 2013'teymiş! Temam da Anında Arama kullanıyor ve sonuçları orada da sınırlamak istiyorum. Bunu nasıl yapabilirim?
Sparsh Goyal
Mevcut temam, aranan terim/kelime için birkaç başlangıç satırıyla gönderileri gösteriyor. Bunu, gönderi özetinde aranan terimi/kelimeyi içeren paragrafı gösterecek şekilde özelleştirmek istiyorum. Başka bir deyişle, arama sonuçlarında başlangıç paragrafı yerine ilgili metni göstermek istiyorum. Bunu yapmama yardımcı olabilecek var mı?
Azamat
Merhaba,
Arama sonuçlarını belirli gönderi türleri VE belirli özel taksonomi terimleri için nasıl sınırlayabilirim?
Steven
Temalarımın functions.php dosyasında, yalnızca arama terimine göre Gönderileri filtrelemesi gereken kolay bir işlevim var… şimdi bir şey aradığımda, HTTP 500 Hatası “Web sitesi sayfayı görüntüleyemiyor” görünüyor. İşlevimde neyin yanlış olduğuna dair bir fikri olan var mı?
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
Bu, tüm arama formlarını özel gönderi türüne kısıtlıyor – kenar çubuğu arama formum dahil, bu da tüm sonuçları döndürmeli. Bu benim için işe yarıyor:
function 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
Yardım için teşekkürler, kodunuzu geliştirdim, böylece insanlar yalnızca izin verilen gönderi türlerini arayabilir.
function 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.
Bu nasıl uygulanıyor? Greg'in yorumunu doğru okuyorsam, varsayılan aramayı sitenin diğer alanları için olduğu gibi tutarken, yalnızca bir gönderi türüyle sınırlı tek bir form istiyoruz.
Bunun nedeni, üzerinde çalıştığım bir sitenin normal arama işlevselliğinden ödün vermeden oluşturmak istediğim aranabilir bir “Kaynak Kütüphanesi”ne ihtiyaç duymasıdır.
Tadeu
Merhaba, aramayı yalnızca gönderilerin başlığı, kategorisi ve etiketleriyle sınırlamak mümkün mü?
Sandeep
Merhaba,
Arama filtresinde sayfaları kısıtlayamıyorum.
Sadece gönderiler içinde arama yapmam gerekiyor, sayfalar değil.
$query->set(‘post_type’,array(‘post’));
Bu sayfaları da görüntüler.
Jared
Sadece eklemek için bir not, $query'yi döndürmeniz gerekmez.
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Peter
Harika ipucu için teşekkürler!
WPBeginner Ekibi
Nick WordPress arama işlevselliği içerik bulma konusunda pek iyi değil.
Nick
Bu kodu, arama sonuçlarımı Gönderiler değil, Sayfalar ile sınırlamak için kullandım. Bu konuda işe yaradı, ancak içeriğe karşı yalnızca Sayfa adlarını arıyor gibi görünüyor. Örneğin, bir kullanıcı “fiyatlandırma” diye ararsa, Fiyatlandırma sayfası bir sonuç olur, ancak “fiyat” veya “maliyet” (her ikisi de fiyatlandırma sayfasındaki kelimelerdir) diye ararsa hiçbir şey bulunamaz. Eksik bir kod parçası mı var?
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
Belirli kategoriye göre nasıl sınırlandırılır? teşekkürler
WPBeginner Desteği
Sam, lütfen WordPress'te taksonomi arama filtresi ekleme kılavuzumuza bakın.
Yönetici
Hasan Gad Allah
Thank you , i was looking for that code (Y)
Felix
Kod parçacığınızda bir sorun var:
Arka uçtaki arama sonuçlarını sınırlar, bunu şununla sarmalısınız:
if ( !is_admin() ) {
// snippet
}
bloggingfuture
Bu WordPress için oldukça değerli bir kod. Teşekkürler!
Alan Hughes
Peki bunu belirli bir arama çubuğuna nasıl uygularsınız? Filtreyi sitenizdeki her arama çubuğuna uygulamaz, değil mi?
goJohnnyGo
Bunu belirli arama çubuklarına (evrensel olarak değil) nasıl uygulayacağınızı hiç anladınız mı?
Yayın Kadrosu
Evet, burada bir makalemiz var:
https://www.wpbeginner.com/wp-tutorials/how-to-create-advanced-search-form-in-wordpress-for-custom-post-types/
Yönetici
scotte_sprott
Arama sonuçlarını yalnızca sayfaları gösterecek şekilde nasıl sınırlayabilirim?
wpbeginner
@scotte_sprott Dizide, sadece page'i tutun ve posts'u kaldırın.