WordPress Gönderi ve Sayfa Filtreleme için Nihai Kılavuz

Yayınlanan: 2017-07-13

Amazon'da daha önce alışveriş yaptıysanız, büyük bir içeriğin detayına inmek ve tam olarak neyin peşinde olduğunuzu bulmak için filtrelerin gücünü zaten takdir etmişsinizdir. Amazon'da bir ürün ararken, her zaman aramanızı hassaslaştırmanıza yardımcı olan ve yalnızca en önemli gereksinimlerinizi karşılayan sonuçları döndüren filtrelerle dolu bir kenar çubuğu vardır. Müşteri puanı, marka, ürünün erkek mi yoksa kadın mı olduğu, durum (yeni/kullanılmış) ve daha pek çok filtre gibi filtreler.

İçerik filtrelerinin ne kadar kullanışlı olduğu göz önüne alındığında, bunları WordPress içeriğiniz için oluşturma yeteneğinin doğrudan WordPress Core'da yerleşik olması şaşırtıcı değildir. Ve biraz teknik bilgiyle, bu gücü site ziyaretçilerinize sunabilir ve onların içeriğinizde hiç olmadığı kadar çevik bir şekilde gezinmelerini sağlayabilirsiniz.

Bu gönderide, bir eklenti ile kullanıcılarınız için içerik filtreleme seçenekleri oluşturma sürecinde size yol göstereceğiz.

Başlayalım!

Neden WordPress Gönderi ve Sayfa Filtreleme?

WordPress inanılmaz derecede esnektir. Çekirdek, sitenizdeki her şey üzerinde tam kontrol sahibi olmanızı sağlar. Yazı ve sayfa filtreleme, WordPress'in en güçlü özelliklerinden biridir. Gönderiler, sayfalar ve özel içerik için çeşitli yerleşik işlevler vardır. Ayrıca, veritabanında depolanan öğeleri seçmenin, gruplandırmanın ve filtrelemenin birçok yolu vardır. Sayfa şablonuna, gönderi türlerine, sınıflandırma terimlerine, şablon hiyerarşisine, ürün sayfalarına veya istediğiniz herhangi bir şeye göre sıralanabilir arama sonuçları listeleri oluşturabilirsiniz.

Varsayılan olarak, WordPress yerleşik bir arama işleviyle birlikte gelir. Ancak, bu arama işlevi arzulanan çok şey bırakır ve okuyucularınız sonuçları belirli bir şekilde filtrelemek istediğinde yardımcı olmaz. Üçüncü taraf bir eklentinin yardımının devreye girdiği yer burasıdır.

Arama ve Filtre Eklentisi Ne Yapar?

Arama ve Filtreleme eklentisi, varsayılan WordPress arama kutusunu bir sonraki seviyeye taşıyan, kullanımı kolay bir eklentidir. Ziyaretçilerinizin belirli bir terimi aramasına ve sonuçları kategorilere, etiketlere, özel gönderi türlerine, özel taksonomilere, tarih aralığına ve hatta daha rafine bir arama ve daha doğru sonuçlar için hepsinin bir kombinasyonuna göre filtrelemesine olanak tanır.

Eklentiyi kullanmak çok basit. Eklentiyi kurup etkinleştirdikten sonra, nasıl kullanılacağına dair ayrıntılı bir açıklama ile ayarlar sayfasına yönlendirileceksiniz. Özetle, yazılarınızda, sayfalarınızda veya herhangi bir widget'lı kenar çubuklarında herhangi bir yerde bir kısa kod kullanabilirsiniz. Alternatif olarak, kendinizi cesur hissediyorsanız ve küçük bir kodla ellerinizi kirletmekten çekinmiyorsanız, tema dosyanıza tek bir kod satırı yapıştırabilirsiniz.

Birkaç örneğe bakalım.

Arama ve Filtre ile Gönderiler Nasıl Filtrelenir

Eklentinin en temel kullanımı, ziyaretçilerin tüm kategorileriniz ve etiketleriniz arasında arama yapmasına izin veren kısa koddur. Varsayılan kısa kod şöyle görünür:

[searchandfilter fields="search,category,post_tag"] 

Herhangi bir gönderiye, sayfaya veya metin widget'ına ekleyebilirsiniz ve ön uçta arama, kategori ve etiket alanları ile filtreleme seçeneklerini görüntüler:

Ziyaretçilerin birden fazla kategori veya etiket seçmesine izin vermek istiyorsanız, kısa kodu bir açılır menü yerine onay kutuları içerecek şekilde değiştirerek ve her alanı etiketleyerek bunu kolayca yapabilirsiniz:

[searchandfilter headings="Select categories:" types="checkbox" fields="category"]

Yukarıdaki örnekler, eklentinin kenar çubuğunda nasıl kullanılacağını gösterir. Ancak, herhangi bir sayfada görüntülemek için tema dosyanızda da kullanabilirsiniz. Aşağıdaki örnekte, form blog sayfasında görüntülenir. Tek yapmanız gereken aşağıdaki kod satırını yapıştırmak:

<?php echo do_shortcode('[searchandfilter fields="search,category,post_tag"]'); ?>

Bizim durumumuzda, onu Yirmi Onyedi temasının ana dizin şablonuna ekledik.

Özel Taksonomiler Nasıl Filtrelenir?

Yukarıdaki örnekler, eklentinin çok temel bir kullanımını göstermektedir. Ancak, Ara ve Filtre eklentisi diğer parametreleri de kabul eder. Ziyaretçilerinizin arama sonuçlarını yalnızca özel sınıflandırmalar için filtrelemesine olanak tanıyan bir kısa kod kullanabilirsiniz.

Diyelim ki WooCommerce ile sitenizde bir mağazanız var. Arama sonuçlarına ürün kategorilerini dahil etmek istiyorsanız, aşağıdaki kısa kodu eklemeniz yeterlidir:

[searchandfilter taxonomies="search,category,post_tag,product_cat" headings=",Categories,Tags,Product Categories"]

Bu örnekte, ziyaretçilerin alanları daha kolay ayırt edebilmeleri için her alanın önüne başlıklar da ekledim:

Bunu temanızdaki bir sayfada görüntülemek istiyorsanız, aşağıdaki kod satırını Görünüm > Temalar > Düzenleyici altındaki uygun sayfa şablonuna yapıştırmanız yeterlidir:

<?php echo do_shortcode('[searchandfilter taxonomies="search,category,post_tag,product_cat" headings=",Categories,Tags,Product Categories"]'); ?>

Gönderiler Tarih Aralığına Göre Nasıl Filtrelenir?

Başka bir kullanım durumu, ziyaretçilerinizin belirli bir kategorideki gönderileri belirli bir tarih aralığında aramasına izin vermektir. Bu durumda, aşağıdaki kod satırını arşivinize yapıştırmanız yeterlidir:

<?php echo do_shortcode('[searchandfilter fields="search,post_date" types=",daterange" headings=",Post Date"]'); ?>

Gönderi Formatları ve Sayfaları Nasıl Filtrelenir?

Son örnekte, gönderi biçimlerini ve sayfaları filtrelemeye bir göz atalım. Video veya sesli gönderiler yayınlarsanız, bu kısa kod, ziyaretçilerin yalnızca belirttiğiniz gönderi biçimine ait gönderileri bulmasına izin verir:

[searchandfilter fields="search,post_format" types=",select" headings=",Post Format" submit_label="Filter"]

Ziyaretçilerin sayfaları veya gönderileri filtrelemesini istiyorsanız, ihtiyacınız olan tek şey gönderi türlerini parametre olarak kabul eden kısa koddur:

[searchandfilter fields="search,post_types" post_types="post,page" headings=",Post Types"]

Yukarıdaki örneklerin yanı sıra, eklenti, sonuçları hiyerarşik sırayla sıralamak, belirtilen kategorilerdeki gönderi sayısını göstermek, sınıf eklemek, yazarları filtrelemek ve çok daha fazlası için parametreler ekleyerek daha da spesifik olmanızı sağlar.

Gönderileri Manuel Olarak Filtreleme

WordPress ile ilgili her şeyde olduğu gibi, bunu eklenti kullanmadan yapmanın bir yolu var. Ziyaretçilerin belirli bir kategorideki gönderileri filtrelemesine olanak tanıyan basit bir form oluşturmak istediğinizi varsayalım.
İlk önce basit bir form oluşturmanız gerekir:

<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">
    <?php
        if( $terms = get_terms( 'category', 'orderby=name' ) ) : 
            echo '<select name="categoryfilter"><option>Select category...</option>';
            foreach ( $terms as $term ) :
                echo '<option value="' . $term->term_id . '">' . $term->name . '</option>'; 
            endforeach;
            echo '</select>';
        endif;
    ?>
    <label>
        <input type="radio" name="date" value="ASC" /> Date: Ascending
    </label>
    <label>
        <input type="radio" name="date" value="DESC" selected="selected" /> Date: Descending
    </label>
    <button>Apply filters</button>
    <input type="hidden" name="action" value="customfilter">
</form>
<div id="response"></div>

Yukarıdaki formda, ilk kısım kullanıcının get_terms işlevini kullanarak sınıflandırmaları seçmesine izin verir. Bunu, varsayılan kategoriler ve etiketler ile özel taksonomiler için kullanabilirsiniz. Sonraki kısım, ziyaretçilerin sonuçları artan veya azalan sırada görüntülemesine izin veren radyo düğmelerini ekler. Son olarak, son kısım, seçilen filtreleri uygulamalarına izin veren formun düğmesidir.

Formun tamamı Görünüm > Temalar > Düzenleyici'de sidebar.php şablonuna eklendi.

Sonraki adım, sonuçların sayfayı yeniden yüklemeye gerek kalmadan görüntülenebilmesi için jQuery'yi kullanmaktır:

jQuery(function($){
    $('#filter').submit(function(){
        var filter = $('#filter');
        $.ajax({
            url:filter.attr('action'),
            data:filter.serialize(), // form data
            type:filter.attr('method'), // POST
            beforeSend:function(xhr){
                filter.find('button').text('Applying Filters...');          },
            success:function(data){
                filter.find('button').text('Apply filters');                $('#response').html(data); 
            }
        });
        return false;
    });
});

Kodun son kısmı, seçilen filtrelere göre sonucu işleyecek olan function.php dosyasına bir fonksiyon eklemektir. Seçilen kategoriyi inceleyecek ve gönderiler olduğu sürece, gönderilen tarihe göre artan veya azalan sırayla görüntüleyecektir. Kategoride herhangi bir gönderi bulunamazsa, hiçbir gönderi bulunamadı mesajını gösterecektir:

 
function my_filters(){
    $args = array(
        'orderby' => 'date', 
        'order' => $_POST['date'] 
    );
 
        if( isset( $_POST['categoryfilter'] ) )
        $args['tax_query'] = array(
            array(
                'taxonomy' => 'category',
                'field' => 'id',
                'terms' => $_POST['categoryfilter']
            )
        );
  
    $query = new WP_Query( $args );
 
    if( $query->have_posts() ) :
        while( $query->have_posts() ): $query->the_post();
            echo '<h2>' . $query->post->post_title . '</h2>';
        endwhile;
        wp_reset_postdata();
    else :
        echo 'No posts found';
    endif;
 
    die();
}
 
 
add_action('wp_ajax_customfilter', 'my_filters'); 
add_action('wp_ajax_nopriv_customfilter', 'my_filters');

Nihai sonuç, bunun gibi ön uç görüntüler:

Neden Okuyucularınızın WordPress'teki Yazıları ve Sayfaları Filtrelemesine İzin Vermelisiniz?

Yukarıdaki yöntemler, kullanıcıların gönderilerinizi filtrelemesine izin vermenin harika bir yoludur. Ama neden bunu yapmak isteyesin ki?

WordPress, gönderilerinizi kategoriler ve etiketlerle düzenlemenize zaten izin verir, ancak kullanıcıların aynı anda yalnızca tek bir kategori veya etiketi görüntülemesine izin verir. Ayrıca, kendi kategorilerini kullanan özel gönderi türleri kullanırsanız, bu kategoriler normal gönderiler için kullanılanlarla birlikte görünmez.

Arama ve Filtreleme eklentisi, yalnızca bir çok farklı kategori ve etiketin yılın içeriğiyle eşleştiğinde değil, aynı zamanda portföy, galeri, referans ve daha fazlası gibi özel gönderi türleri eklediyseniz de kullanışlı olur.

Başka bir örnek, ziyaretçilerinizin ürünlerinizi filtrelemek ve aradıklarını bulmak için bu eklentiyi kolayca kullanabilmesidir. Ve koda aşina iseniz, bunu manuel olarak yapmak, arama sonuçlarının görüntülenme şekli ve hangi parametrelerin kullanıldığı üzerinde daha da fazla kontrol sahibi olmanızı sağlar.

Toplama

Ziyaretçilerinizin istediğiniz içeriği hızlı bir şekilde bulmasını sağlayarak web sitenizin kullanımının kolay olduğundan emin olmak, onlara hoş bir kullanıcı deneyimi sağlamanın ve onları geri gelmeye teşvik etmenin harika bir yoludur. Siteniz içerik açısından zenginse, daha fazla görmek istedikleri içeriği aldıklarından emin olmak için sayfa ve gönderi filtrelemeyi uygulamayı düşünün.

WordPress arama ve filtreleme ile ilgili deneyimlerinizi duymayı çok isteriz. Aşağıdaki yorumlarda bize bildirin.

Graphicglobe / Shutterstock.com'dan makale küçük resmi