默認(rèn)情況下,WordPress 會將title標(biāo)題中的 破折號 - 和 & 等特殊符號進行轉(zhuǎn)義,比如 - 轉(zhuǎn)義為 –,& 轉(zhuǎn)義為 &。某些SEO人員說這個會引發(fā)SEO方面的問題,其實這個說法沒有任何依據(jù)。但是,如果你真的很在乎這個所謂的問題,可以根據(jù)本文的教程解決。

WordPress 為什么要轉(zhuǎn)義特殊字符
一句話,為了安全。通過轉(zhuǎn)義,可以避免某些情況下的惡意代碼輸出。當(dāng)然,這種情況極少出現(xiàn)(我們也不知道如何惡意)。轉(zhuǎn)義的代碼結(jié)果在我們看來是不會對SEO產(chǎn)生不利影響的,否則WordPress官方開發(fā)團隊也不會這樣做。
不推薦的或無效的處理方法
不推薦的方法
網(wǎng)絡(luò)上給出的解決方法大多數(shù)是直接全局禁用 wptexturize 功能,這種做法是不推薦的!!因為在其他的一些場景中,通過轉(zhuǎn)義增強安全性還是很有必要的。
add_filter('run_wptexturize', '__return_false');
失效的方法
似乎從 WordPress 4.4 開始,WordPress 就建議采用 add_theme_support( 'title-tag' );啟用 document title 來輸出標(biāo)題,不再使用 wp_title() 函數(shù)直接輸出標(biāo)題。
所以,以下方法在現(xiàn)在的大部分主題中應(yīng)該都不再生效了,除非你用的主題是老古董。
remove_filter('the_title', 'wptexturize');
remove_filter('wp_title', 'wptexturize');
remove_filter('single_post_title', 'wptexturize');
正確的禁止 title 轉(zhuǎn)義的方法
現(xiàn)代 WordPress 主題基本采用 add_theme_support( 'title-tag' );啟用 document title 來輸出標(biāo)題,在標(biāo)題的輸出函數(shù) wp_get_document_title() 的最末端有一個過濾鉤子 document_title,我們需要做的就是通過它來將轉(zhuǎn)義后的內(nèi)容反轉(zhuǎn)義為正常輸出,該方法不需要全局禁用 wptexturize,所做的影響僅限于標(biāo)題輸出。
完整的代碼如下:
/**
* 禁止 WordPress 轉(zhuǎn)義 title 標(biāo)題中的破折號 - 和 & 號等特殊符號
* http://www.ydqwiac.cn/disable-title-wptexturize.html
*/
function wpdx_decode_title_entities($title) {
if (isset($title)) {
$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
}
return $title;
}
add_filter('document_title', 'wpdx_decode_title_entities');
一般來說,將上面的代碼添加到當(dāng)前主題的 functions.php 或其他插件代碼中即可。




