Ana Sayfa » »
Tem
17
2013

WordPress Sitede Aramaları Sadece Yazı Başlıklarıyla Sınırlandırma

WordPress'in en zayıf olduğu kısım ne yazık ki arama yapma sistemi. WordPress arama formunu kullanarak, aradığınız bir yazıya ulaşmak neredeyse imkansız. Çünkü WordPress arama kutucuğuna yazdığınız her bir kelimeyi, yazıların içerik bölümlerinde de aramaktadır. Dolayısıyla birçok yazıda geçebilecek bir kelimeyi arama cümlenize yazmışsanız, karşınıza birbirinden alakasız onlarca yazı gelecektir.

Neyse ki bunun bir çözümü var. Aşağıdaki kodu temanızın functions.php dosyasına uygun şekilde eklemeniz durumunda. Arama işlemi sadece yazıların başlıklarıyla sınırlandırılacak, böylece aranan yazılar daha rahat bulunabilecek.

function __search_by_title_only( $search, &$wp_query )
  {
      if ( empty($search) )
      return $search; // skip processing - no search term in query
      $q =& $wp_query->query_vars;
      
      // wp-includes/query.php line 2128 (version 3.1)
      $n = !empty($q['exact']) ? '' : '%';
      $searchand = '';
      foreach( (array) $q['search_terms'] as $term ) {
      $term = esc_sql( like_escape( $term ) );
      $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
      $searchand = ' AND ';
  }
  $term = esc_sql( like_escape( $q['s'] ) );
  if ( empty($q['sentence']) && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )
  $search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
  if ( !empty($search) ) {
      $search = " AND ({$search}) ";
      if ( !is_user_logged_in() )
          $search .= " AND ($wpdb->posts.post_password = '') ";
      }
      return $search;
  }
add_filter( 'posts_search', '__search_by_title_only', 10, 2 );

Bazı site sahipleri, aramaya sadece yazı başlıklarının değil, aynı zamanda etiketlerin de dahil edilip, edilemeyeceğini sormaktadırlar. Ne yazık ki WordPress arama işleminde sadece veritabanındaki wp_posts tablosu üzerinde işlem yapmaya izin vermekte, bu nedenle de etiketler tablosunu işin içine sokamıyor, dolayısıyla da etiketlerde de arama yapamıyoruz. Şimdilik bununla yetineceksiniz.

Ancak temalardaki search.php dosyası düzenlenip, yapılan arama sorgusu burada yeniden değerlendirilip, işin içine etiketler de dahil edilebilir, fakat bunun nasıl yapılabileceği ile ilgili şu an bir fikrim yok.

Thanks WPSnipp

Bu yazımı beğendiyseniz, bu kategoride yer alan Yazılar, Sayfalar ve Ortam Kütüphanesi Listelerine ID Sütunu Ekleyelim başlıklı functions.php, ortam kütüphanesi ve tüm yazılar konularında bilgi veren bir önceki yazımı da okumanızı tavsiye ederim.

Yorumunu Yaz

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yukarı Çık