KaranlıkSes
Yeni Üye
1. Yanlış Sorgu Kullanımı
- Neden sorun:
WP_Queryyerine doğrudan$_GETilemysqli_querykullanmak, veritabanını doğrudan zorlar ve performansı düşürür. - Doğru yol:
pre_get_postsfiltresi ile varsayılan arama sorgusunu değiştirip,WP_Queryile 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_scriptyerine 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_scriptsaksiyonuna bağlayın.
3. Kullanıcı Girdisinin Yetersiz Temizlenmesi
- Neden sorun:
$_POST['s']doğrudanwpdb->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()vecheck_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
nextURL'leri yanlış yapılandırılmışsa, sonuç döngüsü bozulur. - Doğru yol:
wp_ajax_noprivvewp_ajaxaksiyonlarıyla sayfa numarası kontrolü ekleyin,pagedparametresi 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ı?
| Eklenti | Avantajı | Yalınlık | Örnek Kullanım |
|---|---|---|---|
| Ajax Search Lite | Ücretsiz, hafif | Kompakt | Basit arama için idealdir. |
| Relevanssi | Daha akıllı eşleştirme | Ağır | Match sıralama özelleştirme gerektiriyorsa. |
| Ajax Autocomplete | Otomatik tamamlama | Orta | Ürün aramaları, e‑commerce. |
| Ajax Search Pro | Pro destekli, melek eşleştirme | Ücretli | Karmaşı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?