在 N 年前,我寫了一片教程:WordPress 新增投稿功能,這篇教程目前的點選率已經快接近 9000 了,算是筆者部落格最火的一篇文章了。這篇教程從釋出到現在,不知道改過多少遍了,也不斷收到讀者各方面的需求,我也在留言中給他們一一回復了,所以文章中找不到你想要的東西,可以看看留言。

鑑於留言中我已經給很多讀者指導怎麼修改程式碼,如果現在再去修改文章中的程式碼,勢必會導致程式碼所在行數的變化,等於毀了我之前給讀者的所有回覆。最近一段時間,我將再寫幾篇文章,告訴你怎麼增強這個投稿功能。今天要講的是如何給這個投稿功能新增一個富文字編輯器 (也包括了圖片上傳功能),原來的程式碼只能實現一個簡單的純文字輸入框,對於投稿者的輸入體驗不太好。

一、下載 KindEditor

這裡我們將使用 KindEditor 來作為我們的編輯器,點此下載 KindEditor 。下載後解壓,將資料夾重新命名為 kindeditor,放到你當前主題資料夾下。

二、修改 HTML 頁面

開啟 WordPress 新增投稿功能,下面我們將對這篇文章中的程式碼進行修改。

將程式碼一中第 41 行的</form> 改成:

</form>
<script charset="utf-8" src="<?php%20bloginfo('template_url');%20?>/kindeditor/kindeditor-min.js"></script>
<script charset="utf-8" src="<?php%20bloginfo('template_url');%20?>/kindeditor/lang/zh_CN.js"></script>
<script>
/* 編輯器初始化程式碼 start */
    var editor;
    KindEditor.ready(function(K) {
        editor = K.create('#tougao_content', {
        resizeType : 1,
        allowPreviewEmoticons : false,
        allowImageUpload : true, /* 開啟圖片上傳功能,不需要就將 true 改成 false */
        items : [
            'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline',
            'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',
            'insertunorderedlist', '|', 'emoticons', 'image', 'link']
        });
    });
/* 編輯器初始化程式碼 end */
</script>

三、 php 程式碼小修改

程式碼二第 37 行程式碼改成:

$content =  isset( $_POST['tougao_content'] ) ? trim($_POST['tougao_content']) : '';
$content = str_ireplace('?>', '?&gt;', $content);
$content = str_ireplace('<?', '&lt;?', $content);
$content = str_ireplace('<script', '&lt;script', $content);
$content = str_ireplace('<a ', '<a rel="external nofollow" ', $content);

四、自定義編輯器功能

經過以上三步的修改,目前你的編輯器就可以正常使用了。但是對不同人來說,他們的需求可能不太一樣,有人可能會覺得上面的編輯器太過簡單。那麼怎樣自定義編輯器的功能呢?這裡我就不講程式設計了,簡單點就找編輯器自帶的樣例來說就行了。

我們下載的 kindeditor 目錄下有個 examples 資料夾,這裡是部分演示,雙擊開啟 index.html 可以看到所有演示。你是否看中某個演示呢?那就用文字編輯器開啟它的 html 檔案,檢視裡面的程式碼。這些 html 檔案的程式碼中都可以看到類似程式碼:

<script charset="utf-8" src="../kindeditor-min.js"></script>
<script charset="utf-8" src="../lang/zh_CN.js"></script>
<script>
    ... 編輯器初始化程式碼
</script>

編輯器初始化程式碼那部分程式碼替換第三步中的編輯器初始化程式碼,然後將 'textarea[name="content"]' ,改成 '#tougao_content'即可。

好了,新增個編輯器就是這麼簡單。如果你會程式設計,或者懂看檔案,動手能力強,可以看看 KindEditor 的檔案,自己動手玩玩:KindEditor 檔案。