Neler yeni

Hoşgeldin Ziyaretçi

Kayıt olarak forumumuzdan dosya indirebilir,bilgi sahibi olabilir,daha iyi bir şekilde yararlanabilirsin.

Şimdi kayıt ol

WordPress’te Özel Arama ve Filtreleme Sistemleri

wpforum

Member
Yönetici
53
22 Ocak 2025
1. WordPress'te Varsayılan Arama ve Filtreleme

WordPress, varsayılan olarak basit bir arama sistemi sunar. Bu sistem, yazıların başlık ve içeriklerinde anahtar kelime araması yapar. Ancak, bu sistem genellikle sınırlıdır ve özel ihtiyaçlarınızı karşılamayabilir.

a) Varsayılan Arama Sistemi
  • Arama Formu: get_search_form() fonksiyonu ile varsayılan arama formunu görüntüleyebilirsiniz.
  • Arama Sonuçları: search.php şablon dosyası, arama sonuçlarını görüntüler.
b) Varsayılan Filtreleme
  • Kategoriler ve Etiketler: Yazıları kategorilere ve etiketlere göre filtreleyebilirsiniz.
  • Arşiv Sayfaları: Yazıları tarih, yazar veya özel taksonomilere göre filtreleyebilirsiniz.
2. Özel Arama Sistemi Oluşturma

Özel arama sistemleri, daha gelişmiş arama özellikleri sunar. Örneğin, belirli alanlarda arama yapma, çoklu kriterlere göre filtreleme veya özel post türlerinde arama gibi işlevler ekleyebilirsiniz.

a) Özel Arama Formu Oluşturma
Aşağıda, özel bir arama formu örneği bulunmaktadır:

HTML:
<form role="search" method="get" action="<?php echo home_url('/'); ?>">
    <input type="text" name="s" placeholder="Ara..." value="<?php echo get_search_query(); ?>">
    <input type="hidden" name="post_type" value="product"> <!-- Özel post türü için -->
    <button type="submit">Ara</button>
</form>
Bu form, yalnızca "product" özel post türünde arama yapar.

b) Özel Arama Sorguları
WordPress, WP_Query sınıfı ile özel arama sorguları oluşturmanıza olanak tanır. Örneğin, belirli bir kategorideki yazıları aramak için:

PHP:
$args = array(
    's' => get_search_query(),
    'category_name' => 'teknoloji', // Belirli bir kategoride arama
);
$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        the_title();
    }
} else {
    echo 'Sonuç bulunamadı.';
}
wp_reset_postdata();
3. Özel Filtreleme Sistemi Oluşturma

Özel filtreleme sistemleri, kullanıcıların içerikleri belirli kriterlere göre filtrelemesini sağlar. Örneğin, fiyat aralığına, renge veya diğer özel alanlara göre filtreleme yapabilirsiniz.

a) Özel Filtreleme Formu
Aşağıda, özel bir filtreleme formu örneği bulunmaktadır:

HTML:
<form method="GET" action="<?php echo home_url('/'); ?>">
    <label for="category">Kategori:</label>
    <select name="category" id="category">
        <option value="">Tüm Kategoriler</option>
        <?php
        $categories = get_categories();
        foreach ($categories as $category) {
            echo '<option value="' . $category->slug . '">' . $category->name . '</option>';
        }
        ?>
    </select>

    <label for="price">Fiyat Aralığı:</label>
    <input type="number" name="min_price" placeholder="Min Fiyat">
    <input type="number" name="max_price" placeholder="Max Fiyat">

    <button type="submit">Filtrele</button>
</form>
b) Özel Filtreleme Sorguları
Formdan gelen verilere göre özel bir sorgu oluşturabilirsiniz:

PHP:
$args = array(
    'post_type' => 'product',
);

if (!empty($_GET['category'])) {
    $args['category_name'] = sanitize_text_field($_GET['category']);
}

if (!empty($_GET['min_price']) && !empty($_GET['max_price'])) {
    $args['meta_query'] = array(
        array(
            'key' => 'price',
            'value' => array($_GET['min_price'], $_GET['max_price']),
            'type' => 'numeric',
            'compare' => 'BETWEEN',
        ),
    );
}

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        the_title();
    }
} else {
    echo 'Sonuç bulunamadı.';
}
wp_reset_postdata();
4. AJAX ile Dinamik Arama ve Filtreleme

AJAX, kullanıcıların sayfayı yenilemeden arama ve filtreleme işlemleri yapmasını sağlar. Bu, kullanıcı deneyimini önemli ölçüde artırır.

a) AJAX ile Dinamik Arama
1. JavaScript Kodları:
javascript
jQuery(document).ready(function($) {
$('#search-input').on('input', function() {
var searchQuery = $(this).val();
$.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'POST',
data: {
action: 'custom_search',
search_query: searchQuery
},
success: function(response) {
$('#search-results').html(response);
}
});
});
});


2. PHP Kodları:
php
function custom_search() {
$search_query = sanitize_text_field($_POST['search_query']);
$args = array(
's' => $search_query,
'post_type' => 'product',
);
$query = new WP_Query($args);

if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<div>' . get_the_title() . '</div>';
}
} else {
echo 'Sonuç bulunamadı.';
}
wp_die();
}
add_action('wp_ajax_custom_search', 'custom_search');
add_action('wp_ajax_nopriv_custom_search', 'custom_search');


5. Popüler Arama ve Filtreleme Eklentileri

  • SearchWP: Gelişmiş arama özellikleri sunar.
  • Relevanssi: Arama sonuçlarını iyileştirir.
  • FacetWP: Dinamik filtreleme ve arama özellikleri sunar.
  • WP Extended Search: Varsayılan arama sistemini genişletir.
6. Özel Arama ve Filtreleme Sistemleri için İpuçları

  • Performans: Büyük veri setlerinde arama ve filtreleme işlemleri, performans sorunlarına neden olabilir. Optimizasyon tekniklerini kullanın.
  • Güvenlik: Kullanıcı girdilerini her zaman doğrulayın ve temizleyin.
  • Kullanıcı Deneyimi: Arama ve filtreleme sistemlerini kullanıcı dostu hale getirin.
Sonuç

WordPress'te özel arama ve filtreleme sistemleri oluşturmak, sitenizin işlevselliğini ve kullanıcı deneyimini artırmak için harika bir yoldur. Bu makalede bahsedilen adımları takip ederek, kendi özel arama ve filtreleme sistemlerinizi oluşturabilir ve WordPress sitenizi daha da özelleştirebilirsiniz.
 
Üst