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