Addicted Live Search workaround for WP 2.5

最近都一直沒什麼在管部落格。

升上2.5後本來是覺得好像都正常,不過月初發現其實Addicted Live Search掛了,不管打什麼都找不到。作者幾百年沒更新了,說他沒在寫php,不會去修了。

研究半天找不到原因,本來想要換一隻有支援2.5的plug-in,但是那隻在我的theme無法正常顯示,會亂掉。後來在他的comment中發現原來是新版permalink處理方式改變了。有個韓國網站寫了處理方式。

看不懂韓文也沒差..反正就在plug-in中加入以下的片段,然後重新update permalink structure即可。


function addicted_search_rewrite($wp_rewrite) {
$rules = array(
'wp-content/plugins/addicted_live_search/search_results.php' => '/',
);
$wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
// Hook in.
add_filter('generate_rewrite_rules', 'addicted_search_rewrite');

由於這個修正一定要在activate plug-in之後,再去update permalink structure,所以稱不上是fix,只能算是work around。不過目前好像還沒有人提出更好的方法,就將就著用吧。

WordPress 2.5

最近很少在更新blog了,不過因為隔很久WordPress又出了新版2.5,就用dreamhost的one-click install升級一下看看。

主要的變化大概就是整個後台都翻新了,look and feel感覺上是不同的軟體。

有什麼好用的功能,最近也沒什麼時間試,目前為止是還沒有發現什麼問題。

最主要是看看Live Sync能不能繼續使用,要不要修正,現在看起來是沒什麼問題,那應該就不用再改什麼了。

Live Space Sync 1.01

1.01下載

最近都沒在弄,原作者也寫了新版,雖然還沒公開。
不過因為和Wordpress 2.3版有點不相容,所以還是修了一下。感謝Kirin

變更:

  • 修正取得分類的方式
  • 只有管理者(等級>8)的使用者才看得到同步設定

Wordpress 2.2

已經出來一陣子,算是op了。
不過說實在每次升級總是要花點時間搞東搞西,沒空出一、二個小時還真不敢亂動。

這次沒有自己做diff了,直接用愛婕那邊的diff檔

一樣手滑一下就升好了,除了我沒在用的widget以外好像也沒有太大的變革,不過還是有注意到兩個地方不一樣。

  1. 編寫文章的preview改成要手按才有了。對頻寬不足的地方是有些幫助,不過其實我比較喜歡本來的。Whatever, I can live with this。
  2. 過去不斷提到的set names patch,這次官方版本有內建了。

新建立的站台還沒試不曉得,如果是過去使用set names patch的,在原有的wp-config.php先加入以下兩行:

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', 'utf8_general_ci');

之後再升級,不需要原本的set names patch,可以直接覆蓋wp-db.php檔案,理論上應該就和我的站目前一樣都ok。
而過去沒有使用set names patch的,就不要加上這兩行,一樣可以維持正常。

WordPress 2.1.3

WordPress 2.0.10和2.1.3修正一些小bug和比較不嚴重的安全性更新。下載2.1.3新版。
閱讀『WordPress 2.1.3』全文 »

建議升級至2.1.2

只要進control panel應該就會看到,有點扯的消息

據說官方網站被入侵,在網站上的2.1.1下載裡面加了後門。

因為提早出來,大部份的更新都不怎麼重要,比較有影響的是修正一個在搜尋時,只打空白或逗號之類的東西,搜尋結果會回傳db error的問題(3722)。另外修正了一個XSS漏洞(3879)。

總之該升就升一升吧。

會吵才有糖吃

我在dreamhost上面,一直有一個奇怪的問題,系統時間會不斷快轉和倒退,秒數會1, 2, 3, 4, 6, 4, 5這樣亂跳。

造成的問題很多,例如說wordpress每頁下面的time elapse極度不準,還會出現負數,這還算小問題,最大的問題是這樣會造成常常一個cron item會被跑二次甚至三次。結果我cron只好寫成跑script,script裡面再搞個簡單的lock避免跑兩次,實在很麻煩。

本來以為是他跑在vmware還是什麼東西下,時間才會亂掉,後來最近在做其它的事的時候想到這件事,上網查了一下這個東西,發現也有別人發生,是linux kernel的問題,而且已經修正了。看到最後結論還是去找客服吧,回信速度倒是非常快,不過第一次他沒修好,第二次才真的換成正確的kernel。

才疏學淺不曉得理由,不過總之是修正了,目前看起來相當正常,wordpress裡面出現的時間數字也合理多了。這問題從一年前開始用就是這樣,似乎很多server都這樣,結果他也沒有做普遍性檢查,大概一個人報才修一台吧?

總之就是會吵才有糖吃…。

live search

之前就一直在用的live search plug-in,我想應該很多人都曉得在IE下面打中文永遠都是No Results.

前幾天把部落格上的prototype.js從1.5.0rc0(幾乎所有的人都還在用)換成1.5.0 release,script.aculo.us升到1.7.0。那時候沒啥感覺,只覺得似乎和原本的script都還相容,prototype.js變肥很多(53.xkb->70kb),再來就沒去理他了。

結果今天無聊在試驗的時候,發現在IE下面打中文竟然搜尋得到東西了。看來新版有針對在IE下的utf8問題做了修正吧。

沒啥大不了就是了,就做個筆記。

Updated: 剛剛發現了,管理後台和1.5.0 release不太相容,comment管理的AJAX會失效。所以後台目前還是要用rc0,前台後台得分兩份了。目前看wordpress trac他們打算2.2版才會修正這些問題。

FancyTooltips re-fix

FancyTooltips在Firefox下會顯示雙重tooltip是個老問題了,而之前我也弄了個修正,但是因為舊的修正和IE7相處不太愉快,最近一直在想辦法改良它。

今天剛好在試Firebug,比js debugger好的地方是,當hover的時候,如果firebug是處於dock狀態,滑鼠不會被focus out--於是難以debug問題就解決了。

問題的癥結點在於,在呼叫setContainerContent()的時候,oContainer有時候並不是空的,真正理由不曉得,可能是某些function的重覆進入。總之清掉就沒事了,修正方法如下:

var oOutputNode = document.importNode(oXMLDoc.documentElement, true);
removeContainerContent(); //增加這一行
var oChild = oOutputNode.firstChild;

照例放上新的修正

這個修正依然包含之前wordpress中<ins> <del>時間錯誤的問題。再加上一個IE透明度的小修正(css)。

注意:FancyTooltips以MIT License方授權。

Live Sync 1.0

基本上把所有想得到的功能都做完了,改了不少,原來MSN Sync的骨架剩下的也不多了。來點新氣象,換名字叫1.0吧。說明也已經更新好,如果沒有什麼大問題的話應該不會再常常更新了吧。

MSN Sync Modified 2.2 -> Live Sync 1.0更新事項:

  1. 增加選項可選擇全文同步或切到<!–more–>為止。可自定另一個內文範本供截斷文章時使用。
  2. 修改時間功能,能真正傳出文章的時間。
  3. 增加一個同步所有文章的按鈕。(因為文章判斷的一些問題,可能只在wordpress 2.1之後有效)
  4. 增加可以選擇不想同步的類別。

下載新版

本來時間是送錯的,所以Live Space在newpost的時候永遠幫你填目前時間。目前可以正確送出在wordpress上面張貼的時間。

而修正時間問題後終於能把同步所有文章的功能加入(不然同步所有文章時間都是現在,很怪)。美中不足的是,因為Live Space日期彙整產生方式比較特殊,就算你同步了舊文也不會出現舊月份的彙整。

p.s: 已經在用的人用Sync All existing Posts功能理論上也是安全的,之前有儲存到id的文章會用edit去修改。若有用到很早期版本msn sync的人,因為一開始id沒有儲存到,就有可能出現重覆文章的問題。

Update: 重新包了一包,也submit到wp-plugins.net上去。新包好的版本檔名改過。舊版使用者請先deactive plug-in,刪除wp-msnspace.php,放入wp-livesync.php之後再重新啟動plug-in。