En çok ihtiyaç duyduğunuzda güvenilir WordPress eğitimleri.
WordPress Başlangıç Rehberi
WPB Kupası
25 Milyon+
Eklentilerimizi kullanan web siteleri
16+
Yıllık WordPress deneyimi
3000+
Uzmanlardan WordPress eğitimleri

WordPress'te Belirli Gönderi Türleri İçin Arama Sonuçlarını Sınırlama

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.

Açıklama: İçeriğimiz okuyucu desteklidir. Bu, bazı bağlantılarımıza tıklamanız durumunda komisyon kazanabileceğimiz anlamına gelir. WPBeginner'ın nasıl finanse edildiğini, neden önemli olduğunu ve bize nasıl destek olabileceğinizi görün. İşte editöryal sürecimiz.

Nihai WordPress Araç Seti

Araç Kitimize ÜCRETSİZ erişim kazanın - her profesyonelin sahip olması gereken WordPress ile ilgili ürün ve kaynaklardan oluşan bir koleksiyon!

Okuyucu Etkileşimleri

26 CommentsLeave a Reply

  1. 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?

  2. 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ı?

  3. Merhaba,

    Arama sonuçlarını belirli gönderi türleri VE belirli özel taksonomi terimleri için nasıl sınırlayabilirim?

  4. 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’);

  5. 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’);

    • 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’);

      • 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.

  6. Merhaba, aramayı yalnızca gönderilerin başlığı, kategorisi ve etiketleriyle sınırlamak mümkün mü?

  7. 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.

  8. 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?

  9. 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 :)

  10. 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
    }

  11. Peki bunu belirli bir arama çubuğuna nasıl uygularsınız? Filtreyi sitenizdeki her arama çubuğuna uygulamaz, değil mi?

  12. Arama sonuçlarını yalnızca sayfaları gösterecek şekilde nasıl sınırlayabilirim?

Cevap Bırakın

Yorum bırakmayı seçtiğiniz için teşekkürler. Lütfen tüm yorumların yorum politikamıza göre denetlendiğini ve e-posta adresinizin YAYINLANMAYACAĞINI unutmayın. Lütfen isim alanında anahtar kelime KULLANMAYIN. Kişisel ve anlamlı bir sohbet edelim.