用 WordPress 做一些 CMS 的筆記
來(lái)源:程序員人生 發(fā)布時(shí)間:2013-11-16 11:10:28 閱讀次數(shù):2794次
這些日子搞了搞 WordPress,確實(shí)是一款很好的 blog 系統(tǒng)。安裝配置簡(jiǎn)單,編輯界面優(yōu)秀,有插件系統(tǒng)。使用方便,速度也還可以,挺適合做 CMS。下面記錄的是我在安裝配置過(guò)程中遇到的一些經(jīng)驗(yàn)教訓(xùn)。
Windows Live Writer
既然要做 CMS,我認(rèn)為最拉風(fēng)的,恐怕要算是 Windows Live Writer 的支持了。有了桌面編輯器的支持真可謂如虎添翼,插圖等等操作真是信手拈來(lái),這是任何基于 HTML 的編輯器無(wú)法比擬的。
只是在使用過(guò)程中,我發(fā)現(xiàn) WLW 上傳的圖片沒有正確地和文章關(guān)聯(lián)起來(lái)。盡管 Role Scoper 的 Attachment Utility 可以幫助我們重新建立起文章和圖片的關(guān)聯(lián),但是建起來(lái)的關(guān)聯(lián)非常不美觀,重新生成了很多附件項(xiàng)目,而原來(lái)的未連接的附件項(xiàng)目依然存在。那就有可能在清理附件的時(shí)候發(fā)生不小心把有連接的附件清除的事故,再說(shuō)一個(gè)附件兩個(gè)項(xiàng)目看起來(lái)也非常不美觀。有沒有辦法讓 WLW 上傳的附件自動(dòng)關(guān)聯(lián)上呢?
我在網(wǎng)上搜了一下,找到了答案。
Issue with Live Writer and Attaching Images on 2.8
那里解釋說(shuō),問(wèn)題在于 WordPress 2.8 做了一個(gè)數(shù)據(jù)庫(kù)模式上的變動(dòng), signed 變成了 unsigned,所以原來(lái)在 xmlrpc.php 里的 -1 都不奏效了,真正在數(shù)據(jù)庫(kù)里形成的數(shù)據(jù)是 0。這個(gè)問(wèn)題會(huì)在 2.9 里修正。目前的解決辦法是:在 xmlrpc.php 里找到如下行,
$attachments = $wpdb->get_results( "SELECT ID, guid FROM {$wpdb->posts} WHERE post_parent = '-1' AND post_type = 'attachment'" );
把其中的 ‘-1’ 改成 ‘0’。
主題
WordPress 2.8 的默認(rèn)主題,日期顯示總是有問(wèn)題。無(wú)論用戶怎么選擇的,都是它自己的時(shí)間格式,不符合國(guó)際化的要求。
我改用了 Precious 主題,效果很好。
插件
Role Scoper
CMS 的一個(gè)必要條件,是權(quán)限控制。 Role Scoper 這個(gè)插件就是干這個(gè)的。我的做法是這樣的:
創(chuàng)建一個(gè)分類 (category) C1,創(chuàng)建一個(gè)組 (group) G1
在 Restrictions/Categories 下面把 C1 配置為受限制的 (restricted)
在 Roles/Categories 下面把 G1 分配為 C1 的 Post Editor
這樣就實(shí)現(xiàn)了只有 G1 的用戶才能瀏覽、修改 C1 分類下的帖子,實(shí)現(xiàn)了內(nèi)部資料的目的。
最后,如果要實(shí)現(xiàn)對(duì)附件的權(quán)限管理,還要開啟 permalink。這在 Roles/Options 下面有說(shuō)明。
Role Scoper 有個(gè) bug,導(dǎo)致了 Windows Live Writer 選擇打開命令時(shí)不能瀏覽到正確的文章。經(jīng)過(guò)幾個(gè)小時(shí)的試驗(yàn),我發(fā)現(xiàn)在 cap-interceptor_rs.php 文件中大約 400 行處 flt_user_has_cap 函數(shù)中,有一個(gè)對(duì)于生成 $listed_ids 的優(yōu)化處理在 xmlrpc 的情況下會(huì)出錯(cuò)。加上一個(gè)條件,讓它在 xmlrpc 的情況下不生效即可。具體修改如下,其中 defined(‘XMLRPC_REQUEST’) 為添加的條件:
if ( defined('XMLRPC_REQUEST') || ! isset($hascap_object_ids[$src_name][$object_type][$capreqs_key]) ) { ...} else ...
Avatar
這個(gè)插件允許用戶自己上傳頭像,而不必引用 gravatar.com 的資源。
Sidebar Login
這個(gè)插件是首頁(yè)的一個(gè) widget,允許用戶在那里登錄,而不必記住管理頁(yè)面的地址。首頁(yè)登錄對(duì) CMS 的可用性至關(guān)重要。(作者:Jackqq)
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)