Simple Tagging 1.3 Eklentisine Türkçe Karakter Desteği

UTW ‘nin ardından bir etiketleme eklentisi daha çıktı. Fakat bu UTW’den çok daha iyi ve hızlı. WordPress 2.1’in ardından UTW büyük sıkıntılar yaşatmıştı. Hatta dmry.net altındaki yazıların çoğunun dahi etiketleri silindi. Pek vakit bulamadığım için tekrar UTW ile uğraşmadım. Kendim yazmayı düşünüyordum ki, Simple Tagging eklentisi çıktı. Çok iyi de oldu hani 🙂

Eklenti ne yazık ki Türkçe karakterleri desteklemiyordu. Yani Türkçe şeklinde bir etiketimiz turkce olmalıydı URL içerisinde. Fakat ne yazık ki olmuyordu. Bir de UTW üzerinde etiketler arasındaki boşluklar yerine URL içerisinde işareti kullanılıyordu. Fakat Simple Tagging ile _ kullanılıyor. Bu da arama motorlarında arşivlenmiş olan ve içerisinde boşluk geçen tüm etiketlere veda etmek oluyor.

Ben bu eklentiyi dmry.net ‘e kurdum fakat yukarıda bahsettiğim koşullar işime gelmedi. Ve hem Türkçe karakter desteği hem de boşluklar için işareti kullanımı sağladım. Ben sadece yamayı nasıl yapacağınızı anlatacağım. Eklenti kurulumu ve kullanımı hakkında bilgi almak için, eklentinin ana sayfasını ziyaret edebilirsiniz.

Başlıkta da gördüğünüz üzere yama, Simple Tagging eklentisinin 1.3 sürümü için geçerlidir.

Yama yapalım

Eklentinin kendi klasörü içerisine girin ve simpletagging.php dosyasını açın.

function tag_name2url($tag_name) {
$tag_name = str_replace(' ', '_', $tag_name); // urlencode converts space ' ' into +. We wanna use _ instead
$tag_name = urlencode($tag_name);
$tag_name = str_replace('%2F', '/', $tag_name); // seems that Apache's mod_rewrite are unable to handle urlencoded URLs properly
$tag_name = str_replace('%2B', '+', $tag_name); // seems that Apache's mod_rewrite are unable to handle urlencoded URLs properly
$tag_name = str_replace('%20', '_', $tag_name); // seems that Apache's mod_rewrite are unable to handle urlencoded URLs properly

return $tag_name;
}

üstteki fonksiyon satırlarını bulun. Bu kodlar 384-392. satırlarda yer alıyor. Ve bu kodların tamamını alttakiler ile değiştirin.

function tag_name2url($tag_name) {
#dmry_yama
/* Orijinal kod başla
$tag_name = str_replace(' ', '_', $tag_name); // urlencode converts space ' ' into +. We wanna use _ instead
$tag_name = urlencode($tag_name);
$tag_name = str_replace('%2F', '/', $tag_name); // seems that Apache's mod_rewrite are unable to handle urlencoded URLs properly
$tag_name = str_replace('%2B', '+', $tag_name); // seems that Apache's mod_rewrite are unable to handle urlencoded URLs properly
$tag_name = str_replace('%20', '_', $tag_name); // seems that Apache's mod_rewrite are unable to handle urlencoded URLs properly
Orijinal kod son */
#dmry_yama
$tag_name = sanitize_title($tag_name);
#dmry_yama

return $tag_name;
}

Bu kez yine aynı dosya içerisinden,

function tag_url2name($tag_url, $sep=', ') {
$tag_name = str_replace(' ', '+', $tag_url); // Replace ' ' with + if + became ' ' due to urlencode. Should always work since we don't allow spaces in URLS as we convert them to _
$tag_name = str_replace('_', ' ', $tag_name); // consider real blanks
$tag_name_array = explode('+', $tag_name); // Create array

$res = '';
foreach ($tag_name_array as $val) {
$res .= ($res == '') ? $val : $sep . $val;
}

return $res;

}

fonksiyonunun satırlarını bulun ve yine alttakiler ile değiştirin.

function tag_url2name($tag_url, $sep=', ') {
$tag_name = str_replace(' ', '+', $tag_url); // Replace ' ' with + if + became ' ' due to urlencode. Should always work since we don't allow spaces in URLS as we convert them to _
#dmry_yama
/* Orijinal kod başla
$tag_name = str_replace('_', ' ', $tag_name); // consider real blanks
Orijinal kod son */
#dmry_yama
$tag_name = str_replace('-', ' ', $tag_name);
#dmry_yama

$tag_name_array = explode('+', $tag_name); // Create array

$res = '';
foreach ($tag_name_array as $val) {
$res .= ($res == '') ? $val : $sep . $val;
}

return $res;

}

Uygulamayı WordPress 2.1 ile denedim ve başarılı sonuç aldım. Böylece etiket bulutu ve yazı altı etiket tanımları için bahsettiğim hatalar düzeliyor. Eğer farklı fonksiyonlarında da benzer durumlar varsa yorumlardan bildirebilirsiniz. Böylece o taraflara da el atmış oluruz 😉