Ajax Tabanlı Arama Yeteneği Eklemek İçin En Uygun Eklentiler

KaranlıkSes

Yeni Üye
Katılım
Eyl 2026
Konular
1
Mesajlar
1
Tepki puanı
0
Görüntülenme
0

1. Yanlış Sorgu Kullanımı​

  • Neden sorun: WP_Query yerine doğrudan $_GET ile mysqli_query kullanmak, veritabanını doğrudan zorlar ve performansı düşürür.
  • Doğru yol: pre_get_posts filtresi ile varsayılan arama sorgusunu değiştirip, WP_Query ile limit, meta ve taxonomi şartlarını ekleyin.
  • Örnek:
PHP:
add_action( 'pre_get_posts', function( $query ){
    if( $query->is_main_query() && $query->is_search() ){
        $query->set( 'posts_per_page', 10 );
    }
});

2. Scriptlerin Yanlış Enqueue Edilmesi​

  • Neden sorun: wp_enqueue_script yerine doğrudan <script> etiketi eklemek, bağımlılıkları göz ardı eder ve çakışmalara yol açar.
  • Doğru yol: wp_enqueue_script( 'my-ajax', plugin_dir_url([B]FILE[/B]) . 'js/auto.js', [ 'jquery' ], null, true );
  • Not: Enqueue fonksiyonunu wp_enqueue_scripts aksiyonuna bağlayın.

3. Kullanıcı Girdisinin Yetersiz Temizlenmesi​

  • Neden sorun: $_POST['s'] doğrudan wpdb->get_results() içine eklemek, SQL enjeksiyonuna açık olur.
  • Doğru yol: $wpdb->prepare() ile parametreleri bağlayın.
  • Örnek:
PHP:
$search = $wpdb->prepare( "WHERE post_title LIKE '%%%s%%' OR post_content LIKE '%%%s%%'", $s, $s );

4. CSRF Korumasının Eksikliği​

  • Neden sorun: Ajax isteklerinde nonce kullanılmaması, yetkisiz kullanıcıların arama sonuçlarını kaydetmesine izin verir.
  • Doğru yol: wp_create_nonce() ve check_ajax_referer() kullanarak güvenlik sağlayın.
  • Örnek:
PHP:
wp_localize_script( 'my-ajax', 'my_ajax_obj', [ 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'my-ajax-nonce' ) ] );

5. Pagination ve Infinite Scroll Yönetimi​

  • Neden sorun: Sayfalama parametreleri doğru ayarlanmamışsa veya next URL'leri yanlış yapılandırılmışsa, sonuç döngüsü bozulur.
  • Doğru yol: wp_ajax_nopriv ve wp_ajax aksiyonlarıyla sayfa numarası kontrolü ekleyin, paged parametresi mantığını klonlayın.
  • Örnek:
PHP:
$paged = ( get_query_var('paged') ) ? absint(get_query_var('paged')) : 1;

6. Eklenti Seçimi – Ne Zaman Hangi Eklenti Kullanılmalı?​

EklentiAvantajıYalınlıkÖrnek Kullanım
Ajax Search LiteÜcretsiz, hafifKompaktBasit arama için idealdir.
RelevanssiDaha akıllı eşleştirmeAğırMatch sıralama özelleştirme gerektiriyorsa.
Ajax AutocompleteOtomatik tamamlamaOrtaÜrün aramaları, e‑commerce.
Ajax Search ProPro destekli, melek eşleştirmeÜcretliKarmaşık arama ihtiyaçları için.

Eklenti seçerken, sayfa yapınız, veri miktarı ve UX beklentisine göre “hafif”ten “gelişmiş”e kadar yelpazede karar verin. Her durumda, sık yapılan hataların önüne geçmek için yukarıdaki hatalar kısmında belirtilen adımları izlemek, performans ve güvenlik açısından belirleyici olacaktır.

Soru: Siz hangi eklenti kombinasyonunu daha çok kullanmışsınız ve hangi hatayla karşılaştınız?
 
Geri
En Üst