解決WP中MarkDown編輯器與Crayon Syntax Highlighter的衝突
背景介紹
眾所周知,使用MarkDown可以極高的提高寫博客的效率。
而WordPress對於MarkDown的原生支持很弱,對於這方面能力的彌補就只能靠強大的插件社區。
官方的JP插件能力強大但過於臃腫,留下算是能力尚可的MarkDown只剩下三款
- JP Markdown -- 官方JP插件的閹割版,預覽切換很麻煩。
- WP Editor.md -- 民間製作,功能全面。
- Markdown Editor --功能精簡不具備代碼高亮,完成度低BUG多。
而我們使用的WP Editor.md功能完善,代碼風格好,方便我們對其進行修改。
而代碼高亮插件我們可以使用強大開源免費的Crayon Syntax Highlighter插件。
問題
Markdown Editor和Crayon Syntax Highlighter的兼容性還是很好的,但有一個很讓人尷尬的問題是--Crayon Syntax Highlighter無法辨認Markdown Editer生成的代碼塊的語言。
圖片打不開請檢查github是否被屏蔽
問題原因追蹤
我們來到Crayon Syntax Highlighter的github官網,在readme.md的Pre-formatted Tags處可以看到,Crayon Syntax Highlighter識別代碼塊是使用pre標籤的lang屬性的。例如:
<pre lang="cpp">blahblahblah....</pre>
我們先關閉Crayon Syntax Highlighter,在博文處檢查元素。
發現pre標籤只有為prism準備的屬性,而代碼語言的格式到code標籤里去了。
解決問題
由此我們打開wordpress安裝文件夾
你的wordpress目錄/wp-content/plugins/wp-editormd/Jetpack/lib/markdown下的extra.php,搜索到$attr_str = class="language-.$this->code_class_prefix.$classname.";
改為
$attr_str = lang=".$this->code_class_prefix.$classname.";
而後又搜索
$codeblock = "<pre$pre_attr_str><code$code_attr_str>$codeblock</code></pre>";
將其改為
$codeblock = "<pre$pre_attr_str $code_attr_str><code$code_attr_str>$codeblock</code></pre>";
將文章更新一下~
問題解決。別忘了打開Crayon Syntax Highlighter
更多文章可以前往James的小筆記本,還請不吝賜教~
推薦閱讀:
※WordPress 4.7「Vaughan」
※現有wordpress程序如何移植到SAE上面
※大家對用 WordPress 建站怎麼看?
※想用最快的速度建立一個商務網站,可以在線購物的。請問選擇drupal好還是wordpress好?本人是有兩年經驗的phper。
※如何快速上手 WordPress?