WordPress在2.3版本以前出過(guò)不少Tags插件,自從WordPress 2.3支持Tags后,這些第三方插件大多轉換為管理和維護系統自帶Tags的功能,其中比較出名的是SimpleTags插件,這個(gè)插件有中文語(yǔ)言包,使用起來(lái)比較方便。
不過(guò)我在使用過(guò)程中,發(fā)現SimpleTags最新版本1.2.4的“批量編輯標簽”有部分缺陷,我這里給出了兩個(gè)缺陷的修改方法:
1、 搜索功能(Search terms)存在問(wèn)題:SimpleTags使用了全文的搜索,只要文章內容包含關(guān)鍵字就匹配,這會(huì )造成大量錯誤匹配,我將其修改為只匹配文章的標題。
修改:simple-tags\inc\simple-tags.admin.php文件,找到1466行,將原來(lái)的
$search_sql = "AND ( (post_title LIKE '%{$search}%') OR (post_content LIKE '%{$search}%') )";
修改為:
$search_sql = "AND ( (post_title LIKE '%{$search}%') OR (post_title LIKE '%{$search}%') )";
2、無(wú)標簽搜索(untagged only)存在問(wèn)題:當文章數量非常大的時(shí)候,這個(gè)功能會(huì )出現錯誤,不返回正常的內容,我將原先代碼中的SQL語(yǔ)句進(jìn)行了修改,大大提高了搜索效率和速度。
修改:simple-tags\inc\simple-tags.admin.php文件,找到1475行,將原來(lái)的
$p_id_used = $wpdb->get_col("
SELECT DISTINCT term_relationships.object_id
FROM {$wpdb->term_taxonomy} term_taxonomy, {$wpdb->term_relationships} term_relationships, {$wpdb->posts} posts
WHERE term_taxonomy.taxonomy = 'post_tag'
AND term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id
AND term_relationships.object_id = posts.ID
AND posts.post_type = '{$type}'");
$filter_sql = 'AND ID NOT IN ("'.implode( '", "', $p_id_used ).'")';
修改為:
$p_id_used = "SELECT DISTINCT term_relationships.object_id
FROM {$wpdb->term_taxonomy} term_taxonomy, {$wpdb->term_relationships} term_relationships, {$wpdb->posts} posts
WHERE term_taxonomy.taxonomy = 'post_tag'
AND term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id
AND term_relationships.object_id = posts.ID
AND posts.post_type = '{$type}'";
$filter_sql = 'AND ID NOT IN ('.$p_id_used.')';
經(jīng)過(guò)這兩處修改,SimpleTags的批量修改日志Tag的功能中就比較好用了。
wordpress simple tags標簽自動(dòng)鏈接無(wú)效的解決
隨著(zhù)wordpress自帶了tag功能后,伴隨了俺很久的Ultimate Tag Warrior 3也完成了他的歷史使命,光榮退休了。
雖然有了這個(gè)功能,但是功能比較弱,后來(lái)發(fā)現了simple tags這個(gè)插件,功能強大的忒多了。批量管理、修改啥的都有了。今天說(shuō)的是其中一個(gè)在日志內容中自動(dòng)加入標簽鏈接的功能,即:我這里已經(jīng)有了一個(gè)“WordPress”標簽,并且日志含有短語(yǔ)“WordPress”,該功能將把“WordPress”短語(yǔ)替換成“WordPress”的標簽頁(yè)鏈接(http://www.juyimeng.com/tag/wordpress/)。
這個(gè)功能我后臺打開(kāi)后,發(fā)現不能用。因為有原來(lái)前面修改Blog Mechanics Keyword Link的經(jīng)驗,所以就順藤摸瓜,找到了
simple-tags/2.5/simple-tags.client.php文件,在大約第265行。將
$match = "/\b" . preg_quote($term_name, "/") . "\b/".$case;
換成
$match = "/" . preg_quote($term_name, "/") . "/".$case;
問(wèn)題解決。原因一樣。老外作的東西,沒(méi)考慮中文,他們的word之間會(huì )有空格我們沒(méi)有,所以,把\b去掉,即可。
但是會(huì )出現吧關(guān)鍵字“word”,遇到wordpress中的前4個(gè)字母也替換掉的情況。
莫非要區分中英文對待?那么就要用2個(gè)正則,而且可能中英文混合。那就麻煩大了。
先用著(zhù)再說(shuō)吧。:D
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。