WordPress'te yazı yazarken, yazı başlığını yazdığınız zaman otomatik olarak permalink (kalıcı bağlantı) yapısı da güncellenir. Ancak permalink yapısının özel karakterler, emojiler veya yabancı dil içeren harfler içermemesini isteyebilirsiniz. Ayrıca tırnak işaretleri gibi karakterlerin kalıcı bağlantıda yer almaması da, SEO açısından faydalı denilebilir. Peki, bu işlemi nasıl otomatik yapabiliriz? Aşağıdaki kodları, temanızın functions.php dosyası içerisine eklemeniz bu yönde yeterli olacaktır. Permalink içerisinde İngilizce ve Türkçe harfler haricinde, harf veya özel karakterler kalıcı bağlantı yapısında çıkmayacaktır. Kodlar, eski yazılarınıza ait kalıcı bağlantı yapısını da etkilemeyecektir.
AYRICA: WordPress Sabit Yazıdan İlk Görseli Kaldıralım
WordPress Permalink Yapısından Özel Karakterleri Temizleyelim
remove_filter( 'sanitize_title', 'sanitize_title_with_dashes');
function allow_accented_characters_permalinks( $title, $raw_title, $context ) {
if ( $context == 'save' ){
$filter1 = str_replace(" ", "-", $raw_title);
$filter2 = mb_strtolower($filter1);
return rawurlencode($filter2);
}else{
$newTitle = str_replace(" ", "-", $title);
return mb_strtolower($newTitle);
}
}
add_filter( 'sanitize_title', 'allow_accented_characters_permalinks', 9, 3 );
function url_sanitizer($str)
{
static $charset = null;
if(is_null($charset)) $charset = get_option('blog_charset');
$sep = '-';
$chars = array
(
'Ç' => 'c', 'ç' => 'c', 'Ğ' => 'g', 'ğ' => 'g',
'ı' => 'i', 'İ' => 'i', 'Ö' => 'o', 'ö' => 'o',
'Ş' => 's', 'ş' => 's', 'Ü' => 'u', 'ü' => 'u',
'â' => 'a', 'é' => 'e', 'î' => 'i', 'û' => 'u'
);
if(!function_exists('mb_strtolower')) $str = strtolower($str);
else $str = mb_strtolower($str, $charset);
$str = trim(strip_tags(urldecode($str)));
foreach ($chars as $no => $yes) $str = str_replace($no, $yes, $str);
$str = preg_replace('/[^a-z0-9' . implode('', $chars) . ']/ui', ' ', $str);
$str = preg_replace('/\s+/', $sep , str_replace('+', ' ', $str));
$str = preg_replace("/(^$sep|$sep$)/", '', str_replace(' ', $sep, $str));
return $str;
}
if(is_admin()) add_filter('sanitize_title', 'url_sanitizer');
Yorum bulunmamaktadır.