1. 前言
在見之前 fallen 說起原來 Ultimate Tag Warrior 的網頁都被 GFW 了,國內朋友原來不能到訪的,心想這麼棒的一個 plugin 如果國內的朋友沒緣用到的話,實在是太可惜了,所以便起了寫這篇文章的念頭。話說回頭,我原本是使用 Jerome's Keywords Plugin(以下簡稱 JK)這個 tagging plugin 的,為什麼我會轉用 Ultimate Tag Warrior(以下簡稱 UTW)呢?當初我是從小踢中得知 JK 的,及後從不同的渠道知道 UTW 比 JK 無論在功能上及 tags 的管理上都更勝一籌,而且新版本的 Extended Live Archive Plugin(教學在此)還整合了 UTW,所以便轉用了 UTW。
2. Ultimate Tag Warrior 的介紹
UTW 是一個 tagging plugin,可供用家在文章中加入 tags,在文章的 tags 可以有以下的功用:- 當然可以最基本以 hyperlink 的形式的顯示出來
- 可以自動生成 Technorati、Del.icio.us 及 Flickr 的 tags
- 支援以 tag 來搜尋有關文章,以 URL 的形式來實現多個 tags 的文章搜尋,例如搜尋同時有 apple 和 sony tags 的文章
- Tags 的有關文章搜尋結果支援 RSS feed 輸出
- 支援多種不同方式的 tags 分佈顯現,例如:Tag Cloud
Bar Chart
還有其他多款顯示方式。
- 支援 tag 的改名、刪除等管理功能
- 通過 Yahoo 的服務來達成 tag suggestion
3. 安裝 Ultimate Tag Warrior
UTW 最新的版本是 Fin. The End,大家可以在作者的網頁下載,只支援 WordPress 2.0 或以上的版本,國內的朋友如果因為 GFW 的關係不能下載的話,麻煩大家在本文內留言,我會電郵最新版本給大家的。重要提示 - 之前的 UTW 版本有一個很嚴重的問題,就是每次有人或 robots 讀取那些沒有 tag 的文章,就會在 wp_postmeta table 內新增一條沒用的 record,有些人因為這問題產生了 30 - 50 多萬 records 在 wp_postmeta table,不但令效能減低,有人甚至因而令到 web hosting / ISP 關閉其 blog,而 UTW 3.141 修正了此問題,所以我強烈建議所有使用 UTW 的朋友,尤其是那些不是所有文章都有 tag 的朋友,更新至版本 3.141 或以後的版本,而那些多餘的 records 可以在 WordPress 控制台內的 Manage -> Tags 中,選取 "Tidy Tags" 來刪除。安裝方法只需將 zip file 的 plugins 目錄內 UltimateTagWarrior 解壓至 wp_content/plugins 目錄內,即 plugins 目錄內會有 UltimateTagWarrior 這個目錄,而 UTW 所有檔案都會在這個目錄內,而在 zip file 中還有 themes folder,內裡的 files 是一些範本用作參考怎樣修改 theme file 的。
在 plugin 頁面內,啟動 Ultimate Tag Warrior Fin. The End 便可。
4. 設定 Ultimate Tag Warrior
當啟動了 plugin 後,在 WordPress Admin. Panel 中 "Manage" 選項底下會多了一個 "Tags" 的選項來管理 UTW 的 tags,及 "Options" 選項底下會多了一個 "Tags" 的選項來作有關 UTW 的設定。同時使用 WordPress 1.5.x、UTW 2.9.2.1 或以前版本及使用 PHP 5 的朋友請注意,在 Admin. Panel 中選擇 Options->Tags 時會出現以下的 error message。
Cannot access empty property in /path/to/root/wp-includes/functions.php on line 246因為 WordPress core file wp-includes/functions.php 中第 246 行中語句有錯誤,但只會影響使用 PHP 5 的朋友,使用 PHP 4 的人是並受到影響的,詳情請看 WordPress Trac Ticket #1708。
要解決這個問題,請把 wp-includes/functions.php 中第 246 行中由
if ( isset($cache_settings->$setting) ) :改成if ( isset($cache_settings->setting) ) :返回正題,有關 Options->Tags 及 Manage->Tags 內的選項,大部份都已經清楚描述了有什麼功用,而且在 UTW 內的 help file 已經有講解,所以我不在此詳談了,但有一個選項我覺得在此詳細講解的,那個就是 Manage->Tags 內的 Custom Fields。
Custom Fields 的功能是用來將文章內的 Custom Fields 某一個 key 轉做 UTW 的 tags,或者將 UTW 的 tags 轉成 custom fields 中其中一個 key,這樣解釋大家未必會明白,換另一個講法就是提供一個渠道給大家由其他 tagging plugins 轉用 UTW,或者由 UTW 轉用另一些 tagging plugins。以 Jerome's Keywords 為例,它的 tags 其實以 custom fields 形式儲存在文章內,key 是 "keywords",用逗號(,)分隔開的,所以如果從 JK 轉用 UTW 的話,只需使用這個功能,在 "Custom field name" 中輸入 "keywords",在 "Tag delimiter" 中輸入 ",",再按 <Import from Custom Field> 按鈕使可將 JK 的 tags 轉換成 UTW 的 tags 了,但最好在 backup database 後才進行這個動作,以免有意外發生。
不過要提醒大家的是這個轉換方法是根據 Custom fields 的內容轉換的,如果使用的 tagging plugin 並不是用 custom field 來儲存 tags 的話,便不可以用這個方法轉換了。
5. 新版本的特點及功能
如果大家是使用 Flock、ecto 或 Performancing Firefox plugin 這類軟件發表文章的話,以前是不可以加 tag 的,但從 UTW 3.0 開始提供了一個功能叫 Embedded tag,作用是在文章中加入特定的標籤,UTW 會自動將那些標籤內的文字變成 tags,但記著要在 UTW option panel 啟動 Embedded tag 功能。UTW 3.0 的 Embedded tag 標籤有兩款:
- [tag]..[/tag]
- [tags]..[/tags]
[tag]tag1[/tag]在文章使用以上標籤的話,"tag1" 會自動變成 tag,而且 "[tag]tag1[/tag]" 會變成 tag search 的 hyperlink 的,記著 "[tag]..[/tag]" 只是用來新增 1 個 tag 的,若果使用 "[tag]tag1, tag2[/tag] 都不會變成兩個 tags 的。[tags]tag1, tag2[/tags]而這款標籤是用來一次增加多個 tags 的,和 "[tag]..[/tag] 不同的是 "[tags]..[/tags]" 是不會變成 hyperlink,而是會隱藏起來。6. Ultimate Tag Warrior 的 theme functions
UTW 提供很多 functions 放在 theme files 中的,因為在 help file 中已經寫得很清楚,我亦無意在此一一詳述,我會在此講講一些常用的 functions,在未講之前談談 UTW functions 的 syntax,大部份 UTW 的 functions 都是用以下的 syntax 的。<?php UTW_FunctionTitle ("$formattype", "$format", "$limit"); ?>在 call UTW 的 functions 時最少要提供第一個 parameter,第一個 parameter "$formattype" 是用來表示使用那一款 UTW 內置的顯示 tags 的方式,例如 "commalist"(apple, ipod, mac),或者 "simplelist"(apple ipod mac)等等,用法詳情請參考 UTW 的 help file。跟著我會談談數個常用的 functions,第一個是 UTW_ShowTagsForCurrentPost(),這是用來顯示文章內的 tags 的,雖然在 UTW 的設定內可以設定自動顯示文章的 tags,但是位置必定是文章最後位置,如果需要自行決定位置的話,使用 UTW_ShowTagsForCurrentPost() 就是必須了,例如我想文章內的 tags 以 commalist 方式顯示的話,可以用以下語句。
<?php if (function_exists("UTW_ShowTagsForCurrentPost")) {
UTW_ShowTagsForCurrentPost("commalist");
} ?>跟著是怎樣顯示和閱讀中文章其他有關的 tags,可以使用 UTW_ShowRelatedTagsForCurrentPost() 來達到這個目的,例如我想以 simplelist 方式顯示的話,可以用以下語句。<?php if (function_exists("UTW_ShowRelatedTagsForCurrentPost")) {
UTW_ShowRelatedTagsForCurrentPost("simplelist");
} ?>第三個是 UTW_ShowRelatedPostsForCurrentPost(),這是用來顯示和閱讀中有關聯的其他文章,原理是以 tag 來作為有關聯的條件,愈多 tags 相同代表愈有關聯,例如要以 posthtmllist 形式來顯示的話,使用以下語句便行:<?php if (function_exists("UTW_ShowRelatedPostsForCurrentPost")) {
UTW_ShowRelatedPostsForCurrentPost("posthtmllist");
} ?>窩子 在本文留言內提出了一個非常好的建議,就是現有 UTW_ShowRelatedPostsForCurrentPost() 這個 function 現在當相同數量的 tags 重疊時,related posts 應以時間倒序來排列,新的文章先行,在 UTW 2.9.1 已經加入這個修改。6.1 Tag 搜尋UTW 提供了 tags 的搜尋功能,平時文章的 tags 是以 hyperlink 形式出現,例如 tag 是 apple 的話,當 click 它時會搜尋所有有 apple 這個 tag 的文章,如果留意 URL 變化的話,會見到這是用 /tag/apple 的方法來達成的,隨了可以用一個 tag 搜尋外,UTW 還支援多過一個 tag 的文章搜尋,只需要在 URL 中加入 "+" (AND) 或 "|" (OR) 便可。例如想搜尋所有同時擁有 apple 及 mac 的文章,可以使用 /tag/apple+mac,或者使用 /tag/apple|mac 來搜尋有 apple 或者 mac 的 tag 的文章,但是怎樣顯示現在的搜尋結果是用什麼 tags 呢?可以使用 UTW_ShowCurrentTagSet() 這個 function,Tag set 以 UTW 的意思便是搜尋中的 tag,/tag/apple 時 tag set 便是 apple,/tag/apple+mac 時 tag set 便是 apple 和 mac 了,例如想使用 "tagsetcommalist" 來顯示 tag set,可以用以下語句。
<?php if (function_exists("UTW_ShowCurrentTagSet")) {
UTW_ShowCurrentTagSet("tagsetcommalist");
} ?>窩子問我在那裡放入 UTW_ShowCurrentTagSet,因為我現在用的 theme 的結構是參考 K2,所以是有別於 WordPress default theme 的,倒不如以 WordPress default theme 為例子講解吧。其實當使用 /tag/wordpress 這類 URL 作 tag search 時,UTW 會尋找一個 tag.php 的 file,如果存在的話就會用它作顯示用,所以只要新增一個 tag.php 的 file,內容可以參考 zip file 內的 /themes/example-bits/tag.php 範本,如今這個範本已經包含了呼叫 UTW_ShowCurrentTagSet() 的源碼,預定的顯示方式是 "tagsetcommalist",如想用另一款顯示方式請修改呼叫 UTW_ShowCurrentTagSet() 內的 parameter。
在 UTW 2.9.1 版本中的 AND tag 搜尋是有問題的,它變成 "OR" 了,例如 /tag/ajax+apple 原本是想找尋所有同時 tagged 'ajax' 及 'apple' 的文章,但現在變成了 /tag/ajax|apple,即是所有 tagged 'ajax' 或者 'apple' 的文章,UTW 2.9.2 修正了此問題。6.2 Tag CloudUTW 比 JK 在 Tag Cloud 上優勝的是除了有字型大小差別外,還有顏色深淺的差別顯示,UTW 提供兩個 functions 來顯示 tag cloud 的:
UTW_ShowWeightedTagSet()及UTW_ShowWeightedTagSetAlphabetical()
UTW_ShowWeightedTagSet() 的結果是會根據 tag 的使用率由高至低來排序,而 UTW_ShowWeightedTagSetAlphabetical() 會根據 tag 的英文字母順序來排列,字型大小及顏色在 Options->Tags 內做設定,而這兩個 functions 是接受很多款不同的 "$formattype" 的顯示方式,例如:- coloredtagcloud - 用顏色分辨 tag 的使用率
- sizedtagcloud - 用字型大小分辨 tag 的使用率
- coloredsizedtagcloud - 用顏色及字型大小分辨 tag 的使用率
- coloredsizedtagcloudwithcount - 除了用字型大小分辨 tag 的使用率外,還顯示了該 tag 的使用次數
1. 新增一個 Page TemplatePage Template 的格式其實和一般 template 的 PHP 檔案差不多,但最重的是在檔案最開頭的地方有以下語句(以下例子的 Page Template 名叫 "Tags Template"):
<?php
/*
Template Name: Tags Template
*/
?>2. 把 call UTW_ShowWeightedTagSet() 或 UTW_ShowWeightedTagSetAlphabetical() function 的語句放於 Page Template 內裡像如下:<?php if (function_exists("UTW_ShowWeightedTagSet")) {
UTW_ShowWeightedTagSet("coloredsizedtagcloud");
} ?>3. 最後新增一篇 Page,選擇使用剛才新增的 Page Template,記著不用輸入任何內容當新增一篇 Page 後,再用 wp_list_pages function 或者參考 WordPress Navigation Bar 的方去顯示該 Page 就可以了。6.3 Tag Search已往如果需要搜尋超過一個 tag 的文章時,在 6.1 Tag Search 內談及的以 URL 的方式是唯一方法,在 UTW 2.8.8 版本開始作者 Christine 嘗試了另一種 Ajax 的 Tag search 的方式,但現時還算是實驗性質,但從 UTW 3.0 提供的 Ajax tag search 比在 UTW 2.8.8 時已經更進一步,因為現除了支擾 OR 的方式搜尋外,還支援 AND 的方式,在 UTW 的 zip file 內,作者 Christine 提供了一個 template "searchtags.php" 給大家,記著根據需要自行修改。
7. 在舊文章內加 tags
在舊的 posts 加 tags 其實有三個方法:- Edit 每一個 post 加 tag,這個方法會比較麻煩。
- 在 phpMyAdmin 內直接加 tags 在 tables 內。(Update: 現在都不建議這樣做,因為有第三個最方便的方法。)
- Update: Inline Tag-Adder(由 Stannum 提供)
首先預備一個 tags 的列表,即是你會使用的所有 tags,在這列表中每個 tags 都要加上一個數字編號(tag ID)以作識別,tag ID 建議由 1 開始每次加一,即是如果我總共會用兩個 tags 'plugin' 及 'wordpress',這個列表便會是:
1 plugin再將在這列表每一行 tag 變成以下的 SQL statement:
2 wordpress
insert into tags table values (tag ID,"tag");以預設 table prefix 為 'wp_' 及用我以上兩個 tags 的例子,就會變成:
insert into wp_tags values (1,"plugin");將這些語句儲存在 file 內,稍後會用的。
insert into wp_tags values (2,"wordpress");
在未談及如何準備 post2tag table 的內容前,大家首先要明白什麼是 post ID,在 WordPress 中每一篇文章都有一個 ID,這是一個獨一無二的數字去代表每一篇文章,就好像身份證號碼一樣,絕不會有兩篇文章用同一個 ID 的。怎樣知道每一篇文章的 ID 呢?其實在 WordPress Admin. Panel 內,Manage -> Posts 時 ID 一欄便是了。
跟著便需要用 post ID 和 tag ID 來預備一個列表來代表文章與 tag 的關係,在這列表中第一欄是 post ID,第二欄是 tag ID,代表著文章用什麼 tag,以之前 tags 列表為例,如果我有兩篇文章,post ID 是 1 和 2,如果 post ID 1 的 tags 是 'plugin' 和 'wordpress',而 post ID 2 的 tag 只是 'wordpress' 的話,這個列表便會像如下。
1 1再將這個列表每一行變成以下的 SQL statement:
1 2
2 2
insert into tags table (post_id,tag_id) values (post ID,tag ID);以預設 table prefix 為 'wp_' 為例,就會變成:
insert into wp_post2tag (post_id,tag_id) values (1,1);將這個語句儲存在 file 內,稍後再用。
insert into wp_post2tag (post_id,tag_id) values (1,2);
insert into wp_post2tag (post_id,tag_id) values (2,2);
使用 phpMyAdmin connect 你的 server,在你的 wordpress database 內按 <SQL> 按鈕,再在下圖的地方按 <Browse> 再選擇之前儲起的 tags file 再按 <Go> 按鈕 import tags 的資料到 tags table 內。
跟著再按 <SQL> 按鈕,按 <Browse> 選擇 post2tag file 再按 <Go> 按鈕 import 文章和 tag 關係的資料到 post2tag table 內。正常沒有問題出現的話,那些舊文章就會加上 tags 了。7.2 使用 Inline Tag-Adder(Stannum 提供)Inline Tag-Adder 是一個使用 Ajax 的方式來加 tag,只需要在 theme file 內合適的地方加入數句 code 的話,就可以方便地在 blog 閱讀文章的同時加 tags,而不需使用 WordPress panel 或 phpMyAdmin 這些麻煩的方法。
以 WordPress 2.0.1 的 default theme 為例子,只需要在 index.php 第 17 行後加入一行,即是第 17 行到 18 行由原本的
<p class="postmetadata">Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
</div>變成 <p class="postmetadata">Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
<?php UTW_AddTagToCurrentPost("simplelist") ?><span id="tags-<?php the_ID(); ?>"><?php UTW_ShowTagsForCurrentPost("simplelist") ?></span>
</div>便成。8. FAQ
- Q: 我已經修改了文章的 tags,但為什麼好像完全沒有更改一樣?A: 有可能有些 tables 的 column 因某些原因沒有產生,可以在 "Manage Tags" 中按 <Force Reinstall> 按鈕來確保 tables 的結構正確,或者有其他奇怪的情況出現時,不妨先按 <Force Reinstall>,有可能問題跟著便會自動消失的,記著 Force Reinstall 是不會將原本文章內的 tags 刪除的,所以不用擔心。
- Q: 我原本是使用 Jerome's Keywords plugin 的,轉用 UTW 的話,文章內所有 tags 是不是要從新輸入過?A: 難道全篇教學你一看便是 FAQ 這部份?:tongue1:在 4. 設定 Ultimate Tag Warrior 內談及 Custom Fields 功能時已經講解清楚了。
- Q: 為何在 WordPress 2.0 beta 或 RC 新增文章時,tags 已經輸入了,但當不是即時發表文章,而是 save draft 的話,tags 會消失了要重新輸入?A: 這是 UTW 2.8.8 版本在 WordPress 2.0 的小問題,
我已經通知作者 Christine,在之後的版本會修正這個問題。在 UTW 2.8.9 版本已經修正了此問題。 - Q: 為何在新增留言後,該留言變成了另一篇文章的留言,而不是原本的文章?A: 這是 UTW 2.9.2 版本的問題,這問題會出現在同時顯示 Related Posts 的 blog,此問題已在 UTW 2.9.2.1 版本修正了。
- Q: 為何在 wp_postmeta table 內有很多 records 都是 meta_key = '_utw_tags_0' 而 meta_value = ''?A: 我不知是由那一個版本的 UTW 的 bug 引致,每次有人或 robots 讀取那些沒有 tag 的文章,都會在 wp_postmeta 產生這些沒用空白的 records,除了佔用空間外,還會引致效能降低,UTW 3.141 版本已經修正這問題,所以強烈建議更新至 3.141 版本,那些多餘的 records 可以在 WordPress 控制台內的 Manage -> Tags 中,選取 "Tidy Tags" 來刪除。
- Q: 為何已經建立了 tag.php,在 click tag link 時會出現 "Not Exist" 的錯誤訊息?A: 1. 如果你的 web hosting 公司不支援 mod_rewrite,但在 Options -> Tags 內選取了 "Use url rewriting for local tag urls" 便會出現這個問題,請刪除 "Use url rewriting for local tag urls"。
2. 如果支援 mod_rewrite 又選取了 "Use url rewriting for local tag urls" 都出現這個問題的話,請檢查 WordPress 的 permalink structure,如果選用 Default 的話是會有問題的,但不知原因為何,解決方法有兩個,一是刪除 "Use url rewriting for local tag urls",二是選用另一個 permalink structure。 - Q: 為何 click 了 tag 會顯示所有文章而不是只有該 tag 的文章?A: 請參考上條 Q&A,第二個可能性提過如 web hosting 支援 mod_rewrite,選取了 "Use url rewriting for local tag urls" 而 permalink structure 是 Default 的話,是會出現 "Not Exist" 的錯誤訊息的,如果曾轉了另一個 permalink structure 又轉回 Default 的話,是不再出現 "Not Exist" 的錯誤訊息,取而代之的問題是 click 了 tag 後顯示所有文章,要解決只需轉用另一個 permalink structure。
- Q: 為何 AJAX Inline Tag-Adder 不能成功運作?A: 這個功能因作者 Christine cleanup javascript 時令到這個功能在某些版本的 UTW 失效,在 3.14159265 版本中得已修正,AJAX Inline Tag-Adder 能再次運作。
- Q: 為何 tag URL 的設定不能運作?A: 首先確定你的 web hosting 支援 mod_rewrite,如肯定的話,請在 Dashboard -> Options -> Permalinks 中再次更新 permalink structure 便可
8. 後話
大家看到這裡應該會發現 UTW 比 JK 無論在功能上和 tags 的管理上都優勝得多,除此以外,UTW 比 JK 優勝之處就是 UTW 的作者 Christine 非常熱心幫助用家,可謂有問必答,而且會接受用家的意見及建議,所以我覺得轉用 UTW 這個選擇絕對沒有錯。
就因為 UTW 的功能實在太多,我在這篇教學中所談及的只是皮毛,而且有可能講得不太清楚,大家如果對這篇教學有什麼問題或建議,不妨在本文內留言通知,好教我修改這篇教學,令它更為完備。
:: Updates ::
- 2005-10-28 - 更新版本 2.8.6 下載鏈結
- 2005-11-08 - 更新版本 2.8.7 下載鏈結及新增第 7 節《在舊文章內加 tags》
- 2005-12-01 - 更新版本 2.8.8 的資料及下載鏈結、6.3 Tag Search (Experimental) 及 FAQ 的第 3 條 Q&A
- 2005-12-08 - 更新版本 2.8.9 的資料及下載鏈結及 FAQ 的第 3 條 FAQ 的答案
- 2005-12-16 - 更新 5.1 Tag 搜尋 - 講解在什麼地方加入 show current tag set 的 function
- 2005-12-30 - 更新 5. Ultimate Tag Warrior 的 theme functions,增加講解 related post 的 function 及修改方法
- 2006-01-13 - 更新版本 2.9.1 的資料及下載鏈結
- 2006-01-14 - 更新版本 2.9.2.1 的資料及下載鏈結及新增 FAQ 第 4 條 Q&A
- 2006-02-24 - 更新版本 3.0 的資料及下載鏈結、加入第 5 節(新版本的特點及功能)、更新 6.3 Tag search 及新增 7.2 使用 Inline Tag-Adder
- 2006-02-27 - 更新版本 3.0.1 的資料及下載鏈結
- 2006-03-12 - 更新版本 3.1 的資料及下載鏈結
- 2006-08-11 - 更新版本 3.141 的資料、下載鏈結及新增第 5 條 FAQ
- 2006-09-12 - 更新版本 3.1415 的資料及下載鏈結
- 2006-09-22 - 更新版本 3.14159 的資料及下載鏈結
- 2006-10-11 - 更新版本 3.141592 的資料及下載鏈結
- 2006-10-22 - 謝謝 sdec040721 的提醒,修正了 UTW_ShowRelatedPostsForCurrentPost() 的例子
- 2006-11-23 - 新增 FAQ 的第 6 及第 7 條 Q&A
- 2007-01-17 - 更新版本 3.1415926 的資料及下載鏈結
- 2007-02-04 - 更新版本 3.14159265 的資料、下載鏈結和新增 FAQ 的第 8 條 Q&A
- 2007-07-12 - 新增 FAQ 的第 9 條 Q&A
嘩,早前想轉用這個plugin(現用bunny's tag),不過一直未有時間琢磨,現在有你這篇介紹,省時多了。
米曹,nikita:不用客氣,最重要是可以幫到大家。:happy:
I got a question, if you install the plugin, how do you tag all the previous posts. Do u have to do each post manually?
AsceticMonk:在舊的 posts 加 tag 其實有兩個方法:
1. 就是你所講的在每一個 post edit 時加 tag,但這個方法會令到 feed 的讀者再次看到一大堆的舊 posts。
2. 用 SQL statement 直接加 tags 上 tables 內,在 post 中加 tag 其實只是涉及兩個 tables,一是 'tags',二是 'post2tag',根據 WordPress config.php 內 table prefix 的設定,預設是 'wp_',如果你沒有改過 table prefix 的話,真正的 table 名稱便是 'wp_tags' 和 'wp_post2tag','wp_tags' 是用來儲 tags 而 'wp_post2tag' 是用來儲 post 與 tag 的關係的。
我不知你是否懂得 SQL,如果懂 SQL 我可以深入談一談怎樣做。:happy:
Thanks for the detailed explanation!
I do understand a bit about MySQL, if that's what you are referring too. Back in university, I did take a class on the subject.
So if you could, could you go into more detail about how to add tags for previous posts? Many thanks in advance!
AsceticMonk:之前我有些地方講錯了,就算自行 edit post 加 tag,是不會令到 feed 讀者看到舊 post 的,另外,我已經新增了第 6 節《在舊文章內加 tags》,你看看能否明白我所講的方法,再給我些意見是否需要作出修改。:wink:
天佑,每次都你这里看教学,每次收到你邮过来的我们大陆被屏蔽的插件,总觉得很感动!谢谢你!真的很感谢!:thumb-up1:
又来麻烦你,我用的是wp1.5.2,可只有manage里有tags,我看了一下版本,发现你上次给我的是2.8.3,是因为早前的版本就只有一个地方有tags吗?我已经激活了,它在数据库是生成了新表,能不能麻烦你把最新的2.8.7再发到我的邮箱。顺便问一下,如果没有删掉数据库里的表,装新的版本会不会有问题?如果要删掉,能不能帮我确定一下那几个是多出来的?谢谢,我对SQL不懂
fallen:最新版本已經電郵給你,早前的版本是在同一版面管理及設定 tags 的,而新版本為了分清楚管理及設定,所以分開了兩個版面,但 tables 是沒有改動過的,所以只需 deactivate 舊版本,overwrite 新版本再 activate 便行了。:wink:
天佑,太感谢了,每次都麻烦你,从来都没帮上过你什么忙。
fallen:不用客氣,只是舉手之勞而已。:happy:
Thanks, the added explanation is very clear and helpful.
天佑,碰到一个问题,我的htaccess是可写的,在设置里选了Use url rewriting for local tag urls ,但点出来404错误,我看了htaccess,它确实没往里面加东西,还有选
Technorati
Flickr
delicious
Wikipedia
gadabe
Zniff
RSS这些选项都不会出现在post里,能不能帮我分析是什么原因?谢谢!:confused:
不好意思,莫名其妙的,我反复设置了几次就好了!还有一个是你所说的当前tag的显示UTW_ShowCurrentTagSet() 要加在模板的那个文件?才能向你这边一样,点出来可以显示当前的tag?谢谢!
fallen:第一個問題,就算 .htaccess 是可寫的,但有時 UTW 會不能更改 .htaccess,你可以在 WordPress Admin. Panel,Options 內 Permalinks 再 update 一次就應該可以解決問題。
至於 UTW_ShowCurrentTagSet() 放在什麼地方,這很取決於你用什麼 theme,以 WordPress default theme 為例,UTW_ShowCurrentTagSet() 是放在 index.php,UTW 提供了 is_tag() function 來檢查是否在 tag search 的模式內,所以可以用以下的 code 來達成的。
谢谢,都弄好了! 昨天在翻你的blog时,看到你有一篇文章说想用 live Search 这个AJAX的插件,但是这个插件对中文支持不好,现在我的一个朋友AvP改了一个中文版的,简体繁体都适用,而且支持搜索页面,推荐给你,http://www.quakemachine.com/blog/myplugins/searchnow/ 他很着迷于AJAX,有自己写了或修改了不少好用的插件(把我写的fallen media改成有阴藏功能了),你应该会觉得合用!
Live Search 已經運行中,反而是 Ajax Comment 因為不知怎樣解決的 encoding 問題,遲遲不能用在這 blog 內。
你是说他的Ajax Comment 吗?应该是utf8的,你这会乱码吗?但现在刚开始,还有些问题
你可以去他那里问问 http://www.quakemachine.com/blog/ 他解决了不少AJAX的编码问题 下面是他的关于编码的说明,希望对你有用“顺便说一下现在大多数 Ajax 程序为什么不支持中文的原因,以便大家以后自己可以处理。主要的原因就是它们传递表单变量的时候用了 escape() 编码,而这个编码对 UTF-8 支持的不太好,所以就会乱码;我们应该用 encodeURI() 或者 encodeURIComponent() 来取代 escape() 。不过 encodeURI() 和 encodeURIComponent() 都需要 IE 5.5 以上才支持,FireFox 则完全没有问题。 ”
fallen:我是參考 Ajax Comment — How I did It 做的,但發覺當一 submit comment 時所有中文都變成亂碼,但 reload page 後就會正常顯示。因為我不知原來 AvP 有一個修改版本,我會往 AvP 那裡看看,謝謝你。
天佑,看得出你对sql挺有研究,我的BLOG最近在搬家,碰到一个问题,就是能不能把A数据库中post ID为n的所有评论(包括名字,内容,ip,最关键是ip)导入到B数据库中post ID为m的评论(B数据库中post ID为m的文章本没有评论),能不能给我可以直接输入到phpMyAdmin的sql代码例子?
如果太麻烦,能不能告诉我怎样修改一个评论的ip(因为数量不太多,最坏的情况我就手工搬评论,但那样所有的ip就都是我自己的,wp不支持改ip,所以我想把评论改成他们本来的ip)谢谢了 !
fallen:你是不是想做到將某一個 post (post ID n) 的所有 comments 變成第二個 post (post ID m) 的 comments?如果是的話,純粹用 MySQL 的 SQL 應該是做不到的,要寫 scripts 才可達成。
如果純粹是改 IP 的話,倒不如在 export 出來的 SQL file 直接 find & replace 會來得更直接。
这么麻烦呀,谢谢了,我只好find & replace 了
你好,很不幸,我就是在国内,上不了作者的网站,能否发一份UTW的文件给我呢,谢谢!
我的邮件地址是 zxiaosong[at]gmail.com
dylan:最新版本 2.8.7 已經電郵給你了。:wink:
找了很久可以用在WP上的tags插件
总算找到UTW,却因为在大陆所以下载不了,郁闷
麻烦天佑给mail一份吧
谢谢了
我的邮件是:kamusis [at] gmail [dot] com
最新版本 2.8.7 已經電郵給你了 kamus。:wink:
谢谢天佑 :thumb-up1:
安装看来很简单,直接解压放到plugins目录中,然后在plugin页面中activate一下就OK了。
我现在activate了除那个legacy之外的其它2个,在blog的post页面和read页面上都没有问题了,非常好。
一个问题,功能上说可以自動生成 Technorati、Del.icio.us 及 Flickr 的 tags,现在默认生成的是Technorati的,作什么操作可以修改为后两者的呢?
另外,我在tags设置中选择了
Icons to display in icon formats
但是保存之后,刷新页面本来有Technoroti Tags字样的地方,现在没有了,而且也没有icon显示。
我又去config中把那些勾去掉,再保存,居然还是什么都没有,以前有的字现在也没有了?
kamus:
一:首先你明白 Technorati 內的 tags 的來源和 del.icio.us 及 Flickr 的 tags 的來源的分別,Technorati 的 tags 的來源根據 Technorati 內 Tag Management 所說是來自:
1. 多款 blog software(Movable Type, WordPress, TypePad 等)所產生的 RSS/atom feed,它的文章分類會自動成為 Technorati 的 tags 的
2. 在文章內含有好像這種格式的 link (<a href="http://apple.com/ipod" rel="tag">iPod</a>),再 ping 了 Technorati,那麼 Technorati 便會根據這種 link 自動生成 tags
Technorati 的 tags 的來源是自動化的,而 del.icio.us 及 Flickr 的 tags 是需要由人自行去加入去的,所以 UTW 是可以自動生成 Technorati tags,但 del.icio.us 及 Flickr 的 tags 就只是純粹以鏈結的形式顯示出來方便去搜尋有關 tags 的 網頁及相片。
二:如果選了 "Icons to display in icon format",在設定 "Format for tag links" 中是需要選擇 "iconlist" 的,否則是沒用的。
至於 "Technorati Tag" 的字樣應該不會自動顯示的,只有 tags 的鏈結會顯示出來,如果需要 "Technorati Tag" 的字樣的話就要自行修改 theme file 了。
谢谢天佑
1。我检查了WP的设置,已经是会自动ping technorati的
2。我查看了设置了tag之后的页面source,发现包含如下行:魔兽世界那么这就意味着所有我自己写的tag都会自动送到technorati上去是吗?
发布之后是不是在technorati上有一定延迟才会显示出来?
支持中文?
至于icon的问题,按您所说的已经解决了,就是需要选择iconlist。
还有一个问题啊
我如何显示像您这里一样的tag cloud page?
我参照您的说法和tag插件中的help
已经创建了templete和相应的page
现在我直接显示那个page的话
就是一排tag有大有小的显示在一个空白页上
如何能做到像您这里这样的效果?
Technorati tags 是應該支援中文的,kamus 你可以試試用中文 tag 搜尋一下,例如”生活”,但我想知你的中文 tag 是否在文章發表後才加上去的?因為之前我試過如果在沒有其他內容更改的情況底下,在發表了的文章內後加 tags,好像是不當作文章修改了,所以不會 update feed,估計亦都不會 ping 其他 services 的。
至於我的 tag cloud 其實只是多了外框和背景顏色吧,我只是用了 CSS,新增了一個 class 內有 border 及 background 而已。
天佑!我的blog经过漫长的搬家,现在总算差不多了!想和你交换一下链接行吗?你的我已经架上去了。
还想问你一下,怎样限制Ultimate显示相关文章的数目,帮助文档里没有这个参数,只能选显示方式,我现在的相关文章list超长!!
是有的 fallen,大部份 UTW 的 functions 的 syntax 都是這樣的:
第 3 個 parameter 就是限制數目了。
至於交換鏈結當然沒問題。:wink:
谢谢!怪我没好好看说明,确实在说明里有:sweatdrop:
天佑,UTW确实是个很不错的tag插件。在我现在测试的WP2.0系统中,已经将原来一直用的technorati tagging插件换成了这个。转换过程很顺利,原来的tag都移过来了。
UTW功能很强大,除了象方便从其它插件中转换过来,编辑具体的tag之外,还有一个功能是我非常看重和需要的,就是related post功能。
其实这个功能是我早在两三个月前,还未知道UTW插件,也没有找到有可以实现这个功能的时候,心里就设想到的一个需求功能。那时候想在自己的blog中添加related post功能。找了几个插件,都是基于标题关键字搜索相关性实现的,暂且不说实际效果不算太好,而且国外的插件因为种种原因(如不好支持中文,象你现在用的可能就是那个最流行的wasabi什么写的吧?)没派上用处,国内bunnyq朋友写的那个感觉也还存在不少问题。所以那时候我就提出个设想,就是换一种思路,不是基于关键字搜索,而是基于不同post之间的tag重合度来确定相关性排序。
前些时间了解UTW之后,知道它也有这个功能了,非常高兴,所以打算升级新站点后正式使用。(安装了这样一个插件,可以替换掉原来好几个了,真经济:)现在我在试用中发现related post功能一个或可改进的地方:
我之前的基于tag的相关性排序的设想是:对于一个帖子来说,哪个帖子中的tag跟他的重合度最高(同样的tag数最多),最相关性最大,排序最前;在tag重合度一样的情况下(同样tag数一样多的帖子),以时间倒序排列,最新的帖子在前面。现在UTW的思路类似,也是以tag重合数来排列的;不过在第二点上,或许是作者没在意的原因,采用了时间顺序排列,感觉这样不太好。
现在的想请教的一个问题是,天佑或其它人知不知道怎么修改一下该插件,使其在重合tag数相同的情况下,按时间倒序排列相关性?(我觉得这在技术上不存在什么难度,只是自己不会程序,不知怎么修改)
另外再请问一下,如何在特定tag的页面中,比如/tag/wordpress中,在其页面上面显示诸如“Entries Tagged with 'wordpress'及其feed呢?这里应该是用到了UTW_ShowCurrentTagSet指令,但是是添加在什么文件中呢?麻烦以自己站点上的实际例子说明一下,谢谢:thumb-up1:
歡迎窩子到臨本 blog。:happy:
回正題,我現在正是使用 WordPress Related Entries plugin,我都覺得效果不太好,我會好好修改文章的 tags,讓 UTW 處理 related post 會比較好,至於排序問題,我要看看 source code 才知我有沒有能力作修改:tongue1:,但我已經在 UTW Support forum 內告訴作者 Christine,希望她能作出修改,我覺得這是最好的做法。
至於 UTW_ShowCurrentTagSet 放在那裡,因為我覺得其他人有可能有同樣問題,所以更新了本教學 ”5.1 Tag 搜尋” 作講解。
谢谢天佑,tag.php的问题搞定。
关于相关性排序的问题,假如Christine能直接在升级版时修改是最好,不然还要麻烦天佑帮忙看看了。(作为相关性来说,一个目的是让读者能在站点上延伸阅读到更多相关的内容,在限制相关帖子数量的情况下,当然是显示新近的相关帖子要比显示理旧的帖子来得合理些。比如同类内容的新帖子总比旧帖子更有参考价值,比如天佑的教学帖子的先后不同版本:)
你好,我在国内怎么也上不了作者网站。下载不了这个插件。麻烦你发到我邮箱里好吗?jj8080@gmail.com.
jj80: 已經電郵給你。:happy:
始终装不上,一上传到plugins文件夹,再激活Ultimate Tag Warrior 2.8.9就出现空白,不管是后台还是首页都空白。好郁闷:hmmm1:不知道是什么问题。
jj80:雖然這樣問好像不太好,但我 send 了兩個版本給你,一個是 WordPress 2.0,而另一個是 WordPress 1.5.x 的,你應該是使用 WordPress 1.5.x 那個吧?
我試過 UTW 2.8.9 for WordPress 1.5 的,真的沒有問題,你是否將整個 UltimateTagWarrior 目錄複製到 plugins 目錄內?
我的WP是1.5.2的,上传的是for 1.5.x的版本。Plugins目录里面有UltimateTagWarrior目录。一上传完就打不开首页了。我只好删掉。我用phpadmin登陆进去看数据库,也看不出什么异常来。是否和其他的tag插件冲突,我原来装的Bunny's Technorati Tags.
有可能和其他 plugins 有衝突,未必一定是 Bunny's Technorati Tags 的,因為我試過用 WordPress 1.5.2 的 default theme,只是 activate UTW 是完全沒有問題的,有可能你要試試只是啟動 UTW plugin 看看有沒有問題。
默认主题也不行。看来我和UTW无缘。只好将就用Bunny’s Technorati Tags算了。
你好,请给我一个for wordpress 2.0的吧。原来用的Jerome’s Keywords Plugin,升级到2.0就不好使了。看了你说的,想试试utw。
我的邮箱heheyahei(a)gmail.com。
谢谢了。
阿貴:已經電郵給你。:wink:
谢了。
看样子我是trackback不过来了,直接留言吧。
插件用上了,一切ok。有一个小问题,如果把tag加入feed,会发现每个tag出现两次,大概是因为把tag分成两级的缘故。我的tag是从jw转过来的,所以primary tag和secondary tag是一样的,以后慢慢改吧。给这里的各位提个醒。
再次谢谢了。:thumb-up1:
你好,能否把最新的UTW发给我呢?
我也想试试这个~
hbifts [at] gmail.com
多谢:)
hbifts:已經發給你。:wink:
窩子:更新了的第五節講解了怎樣修改讓 related posts 以時間倒序來排列。:wink:
你好,请给我发一个for wordpress 2.0的可以吗?我刚用WP,这个TAGS插件感觉非常棒,也想试下,顺祝新年快乐!:yes:
我的邮箱:arista.y@gmail.com
谢谢啦!
天佑,谢谢你前面一些问题的帮助。新年快乐!
我已经准备好发布新站点了,新网址是http://wozy.in。刚发现我自己的UTW还有一个问题,就是tag的feed输出不正常,每个tag的feed页面都显示成那个tag的页面。比如http://wozy.in/tag/meta/feed/rss2,不知是何原因?
I'm in Mainland,please send me a copy of ultimate tag warrior,thanks a lot.
arista.y 及 Tony:我已經發給你們了。:wink:
窩子:我到過你的 blog 發覺這問題實在奇怪,不但停留在 tag 頁面,還出現亂碼,你可以嘗試將那兩個 UTW 的 plugins deactivate,然後再根據以下的次序 activate
1. Ultimate Tag Warrior
2. Ultimate Tag Warrior: Tag Archive
因為我印象中都試過 UTW tag feed 出現問題,用了以上的方法來解決的。
天佑,因为我实在不知道那个tag archive插件是干什么用的,在作者那跟你这都没看明白,所以一直没激活,因为放在那里觉得碍眼,所以后来干脆删掉了。难道tag的feed输出正是需要这个插件的?又或者这个插件到底有什么用?(因为在ELA插件中的tag archive也不需要激活它)?
如果feed的生成确实跟这个插件有关的话,我会马上加回来激活的。(其实原先对于tag的feed输出和订阅无大所谓的,只是昨天刚装了AvP的RSS Live List插件,想将自己站点上的tag搜索也集成进来,所以才想到要用到这个feed输出)
我自己把那个tag archive插件加上激活了下,发现结果还是一样。
天佐,请问为什么我的Tag 不可以用啊http://ffxk.com/tags/
不知道是不是我设置上有不对的地方?
jk够用了~tag这东西 能用就行~ 不喜欢搞那么多花样~
窩子:這麼奇怪我真的不知是什麼原因。
ffxk:我看見 http://ffxk.com/tags/ 是沒有問題,反而是 http://ffxk.com/tag/wordpress 等這類 tag search 有問題,你是否說是這個問題?
cero:UTW 在 tag 的管理上確實比 JK 優勝得多,在 JK 裡是沒有一個方便的方法將某一個 tag 改名的。
天佑:
我是意思就是说http://ffxk.com/tags/
页面随便点一个关键词都不可以搜索,返回的页面和http://ffxk.com/tags/
是一样。
ffxk:你有沒有像這篇教學內 ’5.1 Tag 搜尋’ 的做法,新增一個 tag.php 呢?
我在【管理/tags】選擇Convert Categories to Tags,有五個分類都成功轉換成tags,卻只有一個分類始終沒辦法轉好,難不成真的要按照【步驟6. 在舊文章內加 tags】的方法才能成功?...先謝了
当然加了tag.php文件在风格目录里。
jovi:因為我沒試過 convert catagories to Tags,所以不能提供解答了,真抱歉。
ffxk:你是否用 UTW 的最新版本?在 Options -> Tag 內是否選擇了 'Use url rewriting for local tag urls' 及 /tag/ 作為 'Base url'?因為我就算用原本的 URL,例如 http://ffxk.com/index.php?tag=blog 來搜尋 tag 都不行,所以我覺得在設定上有可能出現問題。
你現在是使用 K2,其實以 K2 的結構是不需要使用 tag.php 的,因為 theloop.php 已經包含了需要的 code 來顯示 tag search 的結果,只需要在 theloop.php 內加入類似以下的 codes 來顯 heading 就可以了。
最後可以嘗試在 Options -> Permalink 再作一次更新,看看能否解決 mod_rewrite 的問題,因為我看過有些人遇到一些 mod_rewrite 問題,在更新 permalink 後就解決了。
theloop.php
文件是那里的,我这里没有。
谢谢天佑!太感谢了。
我将K2里的哪个page-archives.php文件修改了一下再移动到现在的风格里,哈哈成功了。
http://ffxk.com/archives/
你看见我用K2,可能是下午我的测试风格,别人说K2很好,所以我下来看我喜欢不。
please email me:ultimate tag warrior for wordpress 2.0
thank!
samyongq:所需 file 已經電郵給你。:wink:
你好,天佑!
Page Template 怎么创建,我刚用worpress不久,不知道怎么创建,所以我的tagcloud弄不出来真是郁闷。
知道怎么建了,呵呵。
只是我的wordpress创建page后,访问page 总是出现404的错误。不知道是不是我的#Permalinks的设置问题。努力寻求解决方法中...
yiz:有可能是 WordPress 2.0 的問題,因為在 WordPress 2.0 推出後,一直有很多 bug fixes 的,而我就一直追著 SVN 版本,如果你不怕冒險的話,可以到這裡下載 nightly builds,但並不保証是這些 nightly builds 是穩定的。:tongue1:
你好,可以给我发一份 for 2.0版本的么,我的邮箱是iqwolf@gmail.com,谢谢!
iqwolf:已經發給你了。:wink:
你好,可以给我发一份 for 2.0版本的么,我的邮箱是yangzhiyao82@126.com,谢谢!
不透明的霧:已經發了給你。:wink:
选用了Use url rewriting for local tag urls (/tag/tag instead of index.php?tag=tag)
Base url /tag/
然后选了Automatically include secondary tag links
点了tag连接后,提示"系统找不到指定的路径。 "
请问这是什么问题?
ipis:我想知你現在使用的 WordPress 和 UTW 版本是什麼?
这个问题我也出现了,当你安装了UTW插件之后需要更新一下Permalink
谢谢 我也想要一个
不透明的霧:謝謝幫忙回答。:happy:
apher:已經發給你。:wink:
用的wp2.0.1,Ultimate Tag Warrior 2.9.2.1
不过服务器上的运行环境是win2k3,iis加载php的。
ipis:有沒有試過像不透明的霧說在 WordPress admin. panel 更新 permalink?
无奈……
IIS不支持mod_rewrite
只有一个能够凑合用的iis_rewrite可以使用
记得可以下载到"Free"的版本
然后把你需要的.htaccess文件中的rewrite规则写入到
httpd.ini里面(IIS_rewrite组件)
没有仔细看过,不知道语法是否一样,不过都是正则表达式
最近新装了wp2.0.1和最新的UTW,不过我的问题和wozy一样挖,“就是tag的feed输出不正常,每个tag的feed页面都显示成那个tag的页面。”
真是不解
天佑﹕謝謝你的文章﹐看了這一篇﹐節省了不少安裝時間﹗想補充一個在舊文章內加 tags 的方法。我有200多篇舊文﹐無論利用dashboard或是phpmyadmin都比較麻煩﹐所有我留言詢問plugin作者 Christine﹐有沒有更方便的方法﹐她告訴我可以用Magical Inline Tag Adder 。
在Template的The loop內的你認為適當的地方增加 Magical Inline Tag Adder 的兩段code﹐在登入狀態就會顯示一個box﹐可以將tag加入文章之內﹐毋須使用緩慢的dashboard。如果你搜尋所有有某關鍵字的文章﹐然後在同一頁面將所有文章加同一個tag﹐非常方便﹗
Code 和使用方法可以參考你下載的plugin folder裡面的ultimate-tag-warrior-help-themes.html 。
给我发一份针对2.0的吧
谢谢了
我的mail:chenhanwei@gmail.com
Stannum:謝謝你的提點,果然是一個更方便的方法,待有空會更新這篇教學。
kevin:已經發給你。
我想要一份UTW的最新版~应该是2.9.2吗?
iamerac blog@gmail.com
谢谢天佑~刚刚开始用WP,以后多多指教啦~
错咯……上面的email错了……
发到iamerac@gmail.com好咯~谢谢
问下,ULT是我设置有问题,还是ULT支持中文支持得不够呢。我在tag云上点击某中文tag,可以正常访问这个tag下的所有文章,浏览器上的地址是:http://www.yiz.name/tag/游神/
。但是我在浏览器上自行输入“游神”:http://www.yiz.name/tag/游神,却无法列出我需要显示的文章。
我又收到這樣的trackback 了...
http://iamerac.thesubdomains.com/?p=6
请教一下:
想利用这个plugin显示related post, 但是相关文章只想显示在文章那页中,而
主页不要出现,不知道应该如何加 UTW_ShowRelatedPostsForCurrentPost()这一句才能实现上面的想法?多谢了
yiz:我不知道詳細是什麼問題,但有可能是 UTW 的問題,有空我會向作者發問這個問題。
fufu:因為