Platinum SEO, anahtar kelimeler Türkçe karakter hatası

WordPress Platinum SEO eklentisini kullanıyorsanız, anahtar kelimelerde Türkçe karakter hatası yaşıyor olabilirsiniz. Peki bu hata nasıl oluşuyor? Anahtar kelimeler içerisinde yer alan Türkçe karakterleri büyük harfle girerseniz, HTML kaynak içerisinde anahtar kelimenin görünümü hatalı oluyor. Bu makale de ise bunun çözümüne değiniyorum.

Platinum SEO, anahtar kelimeler Türkçe karakter hatası

Eminim birçok kişi Platinum SEO Pack eklentisini kullanıyordur. Gayet güzel ve SEO için önemli bir eklenti doğrusu. Ancak eklentinin Türkçe karakterler ile biraz sıkıntısı var. Bu sıkıntı anahtar kelimelerde kendini gösteriyor. Az önce de belirttiğim gibi, eğer anahtar kelime içindeki Türkçe karakterleri büyük harf olarak girerseniz, HTML çıktı içerisinde bu karakterler problemli oluyor.

Neden böyle?

Eklenti tüm anahtar kelimeleri derliyor ve sonrasında bunları filtreliyor. Filtreleme esnasında birden fazla aynı anahtar kelime teke indiriliyor ve kelimelerin içlerindeki tüm harfler küçük karaktere dönüştürülüyor. İşte bu dönüşüm esnasında büyük ebatta yazılan Türkçe karakterler, hatalı çıktı veriyor.

Örnek görüntümüz ise şöyle 🙂

Platinum SEO, anahtar kelimeler Türkçe karakter hatası

Çözüm yolu

Bu problem eklentinin 1.2.8 versiyonu üzerinde saptanmıştır arkadaşlar. Sonradan yayınlanacak daha güncel sürümlerde bu problem yer almayabilir ve uygulama bu sürüm üzerinde gerçekleştirilmiştir.

Öncelikle eklenti klasörü içerisindeki platinum_seo_pack.php dosyasını açın ve alttaki satırları bulun.


foreach ($keywords as $word) {
/*if (function_exists('mb_strtolower')) {
if (mb_detect_encoding($word) == 'UTF8') {
$small_keywords[] = mb_strtolower($word, 'UTF8');
} else {
$small_keywords[] = strtolower($word);
}
} else {*/
$small_keywords[] = strtolower($word);
/*}*/
}

Aslında çözüm yolunu eklentiyi kodlayan arkadaş uygulamış ancak problem yaşayınca bu etiketleri kapatmış. Gerçekten de şu an o özellik kararlı çalışmıyor ve onu aktif etmeyeceğiz.

Yukarıdaki kodu aşağıdaki ile değiştiriyoruz.


foreach ($keywords as $word) {
/*if (function_exists('mb_strtolower')) {
if (mb_detect_encoding($word) == 'UTF8') {
$small_keywords[] = mb_strtolower($word, 'UTF8');
} else {
$small_keywords[] = strtolower($word);
}
} else {*/
$small_keywords[] = mb_strtolower($word, 'UTF8');
//$small_keywords[] = strtolower($word);
/*}*/
}

Eğer bir değişiklik olmadıysa ve hala hatalı çıktı alıyorsanız, PHP sürümünüzdeki Multibyte String özelliği aktif değildir. Bunu aktif ettirerek çözüme ulaşabilirsiniz. Ya da bulduğunuz kodları aşağıdakiler ile değiştirmelisiniz.


foreach ($keywords as $word) {
/*if (function_exists('mb_strtolower')) {
if (mb_detect_encoding($word) == 'UTF8') {
$small_keywords[] = mb_strtolower($word, 'UTF8');
} else {
$small_keywords[] = strtolower($word);
}
} else {*/
//$small_keywords[] = strtolower($word);
/*}*/
}

Bitti 🙂