解決WordPress(WP)文章發(fā)布或者編輯中半角字符自動(dòng)轉(zhuǎn)全角字符的方法
[重要通告]如您遇疑難雜癥,本站支持知識付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!
我們在使用 WordPress 發(fā)布或者編輯文章時(shí),其會自動(dòng)轉(zhuǎn)義一些字符,比如將‘–’轉(zhuǎn)義為‘-’破折號等等,我們也稱“全半角標(biāo)點(diǎn)符號轉(zhuǎn)換”或者“代碼轉(zhuǎn)義”。因?yàn)?WordPress 的安全措施會智能的將源代碼中的所有半角符號自動(dòng)修正為全角符號,可能目的是以防止外部源代碼在網(wǎng)頁上執(zhí)行。
這個(gè)功能所帶來的小麻煩就是在文章編輯中輸入代碼后,前臺網(wǎng)頁上顯示的不是原始代碼而會被自動(dòng)轉(zhuǎn)義,然后再被人使用復(fù)制粘貼后就會有問題(代碼失去作用變成亂碼)。如果你的 WordPress 網(wǎng)站經(jīng)常要分享一些代碼的話,就需要解決 WordPress 中半角全角字符轉(zhuǎn)義的問題。那我們就來說說如何解決這件事情呢?其實(shí)這樣的問題主要是WordPress 模式使用了 wptexturize函數(shù)將純文本字符轉(zhuǎn)換成格式化的 HTML 實(shí)體而已;
第一種解決方法:移除 wptexturize( ) 函數(shù)
在 WordPress 中“作怪”的函數(shù)就是 wptexturize( ) ,(本文最后附此函數(shù)簡單說明)。那么就移除它,將下面的代碼加入當(dāng)前主題的 funtions.php 文件中:
//取消內(nèi)容轉(zhuǎn)義 remove_filter('the_content', 'wptexturize'); //取消摘要轉(zhuǎn)義 remove_filter('the_excerpt', 'wptexturize'); //取消評論轉(zhuǎn)義 remove_filter('comment_text', 'wptexturize');
一般我們只需要添加第一種代碼(取消內(nèi)容轉(zhuǎn)義)取消文章內(nèi)容轉(zhuǎn)義就夠了,很少有人去復(fù)制摘要和評論這些亂七八糟的玩意兒;
第二種方式依然是取消,我們還是需要添加到主題的 functions.php 文件:
//全角轉(zhuǎn)半角,取消轉(zhuǎn)義 $qmr_work_tags = array( 'the_title', // 標(biāo)題 'the_content', // 內(nèi)容 * 'the_excerpt', // 摘要 * 'single_post_title', // 單篇文章標(biāo)題 'comment_author', // 評論作者 'comment_text', // 評論內(nèi)容 * 'link_description', // 友鏈描述(已棄用,但還很常用) 'bloginfo', // 博客信息 'wp_title', // 網(wǎng)站標(biāo)題 'term_description', // 項(xiàng)目描述 'category_description', // 分類描述 'widget_title', // 小工具標(biāo)題 'widget_text' // 小工具文本 ); foreach ( $qmr_work_tags as $qmr_work_tag ) { remove_filter ($qmr_work_tag, 'wptexturize'); }
第三種方式:或者修改 WordPress 程序源代碼(wordpress 早期版本源代碼-不推薦)
修改 wordpress 程序根目錄下 wp-includes/formatting.php 文件,把實(shí)現(xiàn)自動(dòng)替換的相關(guān)語句注釋掉。找到:
// static strings $curl = str_replace($static_characters, $static_replacements, $curl); // regular expressions $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
將 $curl 開頭的兩句代碼也用 // 注釋掉就好;不推薦這種方法的原因是每次升級 WordPress 程序后,都需手動(dòng)修改一下源文件。
第四種方法,依然是添加代碼
只需要進(jìn)入wordpress管理后臺,主題文件夾編輯窗口下,找到function.php,然后在文件末尾添加這么一行:
?php remove_filter('the_content', 'wptexturize'); ?>
在其他地方也會用到此函數(shù),因此需要更新上面的代碼:
?php /* Plugin Name: 解決半角變?nèi)? Author URI: http://m.madamerex.com/ */ $qmr_work_tags = array( 'bloginfo', 'comment_author', 'comment_text', 'list_cats', 'link_name', 'link_description', 'link_notes', 'single_post_title', 'term_name', 'term_description', 'the_title', 'the_content', 'the_excerpt', 'wp_title', 'widget_title' ); foreach ( $qmr_work_tags as $qmr_work_tag ) { remove_filter ($qmr_work_tag, 'wptexturize'); } ?>
PS:以上幾種辦法,綜上所述中,其實(shí)就第一種即可,要么就使用第二種,第三種也可以勉強(qiáng)使用,不太推薦第四種,其實(shí)第四種跟第三種是一樣的,只不過升級的時(shí)候不會出現(xiàn)其他問題,僅此而已,以上代碼僅供參考,各位看官有疑問請聯(lián)系博主交流,感覺好,就打賞支持博主吧,教程到此結(jié)束;
問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!
這些方法你現(xiàn)在有嘗試過嗎?好像失效了
@grey: 不存在失效,我自己的站就是這么解決的,我站幾乎沒有ctrl+C+V 都是自己測試或者自己心得,你可以看下自己的系統(tǒng)環(huán)境~~