Bu sitedeki her şey Sevgi ile kodlanmıştır.

Kategori Listesini Göster

WordPress Aramalardaki Boşluk Sorunu ve Çözümü


FacebookTwitterPinterestTumblrYazdır


WordPress Aramalardaki Boşluk Sorunu ve ÇözümüWordPress'in eski sürümlerinde, /search/ uzantısı ile arama yaparken, maalesef ki boşluk sorunu söz konusu. Yani URL'nin içerisinde boşluk parametresi olan, "%20" var ise, arama sonuçsuz bilgi döndürmektedir. İlgili sorun, elbette güncel WordPress sürümlerinde çözülmüştür. Ancak eğer ki WordPress'in eski bir sürümünü kullanıyor ve bu tip bir sorun yaşıyorsanız, aşağıdaki kodları temanızın functions.php dosyası içerisine eklemeniz yeterli olacaktır. Böylelikle, "/search/örnek%20arama" şeklinde arama URL'sinde boşluk da olsa, sorunsuz olarak arama sonuçları listelenmiş olacaktır.

AYRICA: WordPress Aramalardaki Özel Karakter Sorunu ve Çözümü

WordPress Aramalardaki Boşluk Sorunu ve Çözümü

add_filter('posts_search', 'smcln_fix_search', 10, 2);
function smcln_fix_search($search, $wp_query) {
global $wpdb;
if ($GLOBALS['wp_query'] !== $wp_query) {
return $search;
}
if ( ! empty( $_GET['s'] ) ) {
return $search;
}
$q = &$wp_query->query_vars;
$decoded = urldecode( $q['s'] );
if ( $decoded == $q['s'] ) {
return $search;
}
$search = '';
$q['s'] = $decoded;
if ( !empty($q['sentence']) ) {
$q['search_terms'] = array($q['s']);
} else {
preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $q['s'], $matches);
$q['search_terms'] = array_map('_search_terms_tidy', $matches[0]);
}
$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}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}'))";
$searchand = ' AND ';
}
if ( !empty($search) ) {
$search = " AND ({$search}) ";
if ( !is_user_logged_in() )
$search .= " AND ($wpdb->posts.post_password = '') ";
}
return $search;
}

  1. Yorum bulunmamaktadır.

Bu yazıya yorum göndermek ister misiniz?

Dikkat: Her yorum gönderen kişi, kendi gönderdiği yorumdan sorumlu olmaktadır.
Not: Yazı ile herhangi bir ilgisi bulunmayan yorumların onaylanmadığını belirtmek isteriz.
Yazı Etiketleri