WordPress’in kendi arama fonksiyonu aslında basit ve iyi fakat büyük sitlerde hem yavaş ve hem de fazladan kaynak harcar. Google aramayı yani “Google Özel Arama(Google Programmable Search Engine)”’yı sitenizde kullanmak eğer sitenizde hız ve performans istiyorsanız kullanmayı düşünebileceğiniz bir şey. Örnek olarak benim bu site için yaptığım arama sonucu sayfasını görmek için https://wolkanca.com/?s=google+arama adresine bakabilirsiniz.
Google Özel Arama’yı kullanmak için yapmanız gereken öncelikle programmablesearchengine.google.com adresine giderek bir özel arama motoru eklemek, ardından eklediğiniz arama motorunu kendinize göre düzenleyin, varsayılan olarak özel arama motoru sitenizin Google tarafından taranmış ve indekslenmiş tüm sayfalarını sonuçlarda gösterir, siz özel ayarlar yaparak arama motorunda gösterilmesini istediğiniz sayfaları seçebilir isterseniz bazı sayfaları ve dizinleri özel arama motorunuzdaki arama sonuçlarından gizleyebilirsiniz.
Ayrıca Google Özel Arama’da oluşturmuş olduğunuz özel arama motorunun; dilini, görünümünü, reklam gösterip göstermemesi gerektiğini(adsense), otomatik tanımlamaları, eş anlamlı kelimeleri, sıra yükseltmeleri, sonuçları sıralama ayarlarını vs. birçok özel ayarı yapabilirsiniz. Daha fazla bilgi için: https://developers.google.com/custom-search
Arama motorunuzu oluşturduktan sonra size verilen kodu WordPress sitenize entegre etmek için aşağıdaki bneim yapmış olduğun search.php dosyasını kullanabilirsiniz, burada olay WordPress’den get_search_query
verisini alıp özel arama motorunda aratmak. Aşağıda örnek kod ve açıklamaları göreceksiniz, bunları kendi WordPress temanızın search.php
dosyasına uygulayabilirsiniz.
Kodlar
Google’ın size verdiği standart kod:
<script
async
src="https://cse.google.com/cse.js?cx=ozelaramamoturuID"></script>
<div class="gcse-searchbox-only"></div>
?s=arama-terimi aratmak:
<gcse:searchresults-only
queryParameterName="s"
linkTarget="_parent"></gcse:searchresults-only>
Sayfanın içerisine eklemeniz gereken özel rama motoru script:
<script
async
src="https://cse.google.com/cse.js?cx=ozelaramamoturuID"></script>
WordPress arama sorgunuzu almak vs.
<?php
//arama sorgusunu WP’den al.
$query = trim(get_search_query());
//arama sorgusunu temizle.
$querytemiz = preg_replace('/\s\s+/', ' ',$query);
//arama sorgusu boş veya 2 karakterden kısa ise yönlendir.
if (empty($querytemiz) || strlen($querytemiz) < 2){
wp_redirect(get_home_url(), 301, 'Search'); exit;
}?>
Örnek WP tema tam kod:
<?php
//arama sorgusunu WP’den al.
$query = trim(get_search_query());
//arama sorgusunu temizle.
$querytemiz = preg_replace('/\s\s+/', ' ',$query);
//arama sorgusu boş veya 2 karakterden kısa ise yönlendir.
if (empty($querytemiz) || strlen($querytemiz) < 2){
wp_redirect(get_home_url(), 301, 'Search'); exit;
}?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>“<?php echo $querytemiz;?>” arama</title>
<meta name="robots" content="noindex">
<script
async
src="https://cse.google.com/cse.js?cx=a02c857711adfcf49"></script>
</head>
<body class="search-results">
<header id="site-header">
Sitenin üst kısmı
</header>
<main id="site-content" role="main">
<header class="archive-header">
<h1>Arama: “<?php echo $querytemiz;?>”</h1>
</header>
<article class="page" id="arama">
<div class="entry-content">
<!-- özel arama motoru sonuçları. ?s=sorgusunu alır -->
<gcse:searchresults-only
queryParameterName="s"
linkTarget="_parent"></gcse:searchresults-only>
</div>
</article>
</main>
<footer id="site-footer" role="contentinfo">
Sitenin alt kısmı
</footer>
</body>
</html>
Hepsi bu kadar umarım birilerinin işine yarar.
Ve WordPress için /search/aramaterimi adreslerini de /?s=aramaterimi adresine yönlendirmeniz iyi olur, aşasıdaki kodu .htaccess dosyanıza ekleyin:
RedirectMatch 301 ^/search/(.*)$ /?s=$1
Bu arada eğer tüm bunlar size zor geliyorsa bunu yapan WordPress eklentisi de var https://wordpress.org/plugins/wp-google-search/ ancak bilindiği gibi güvenlik açıklarından ve birkaç başka nedenden dolayı eğer çok elzem bir şey değilse eklenti kullanmamayı tavsiye ediyorum.