2010-06-27 31 views
1

我是寫Wordpress插件的新手,所以開始我試圖創建一個簡單的修改字符串的插件。我前一段時間寫了劇本,知道它的功能。但爲了將其用於Wordpress,我想將其應用於帖子標題。當我用函數「get_the_title()」替換字符串時,它返回一個白色屏幕。我將其分解爲:Wordpress函數返回插件中的白色屏幕

function display_title() { 
echo get_the_title(); 
} 

add_action('the_title', 'display_title'); 

這仍然返回一個白色屏幕。所以我認爲它必須是「get_the_title()」函數。任何人都可以向我解釋爲什麼這不起作用,也許有不同的方式來檢索標題字符串?

+1

是否打開了錯誤報告?您應該從PHP獲得有意義的錯誤消息。 – 2010-06-27 17:42:56

回答

4

正如約翰說:the_title是一個過濾器,而不是一個行動掛鉤,雖然你的函數來,無論您註冊它的所謂使用add_filteradd_action

你的問題是,使用過濾器你的函數應該返回一個值(通常是通過參數的修改版本)。因此,要使用此過濾器修改標題,您應該這樣做:

function display_title($title) { 
    $title .= '!'; // Do something with the title string here 
    return $title; 
} 

add_filter('the_title', 'display_title'); 
+0

謝謝,這個工作出色。我不知道我可以使用名爲$ title的變量,它會檢索每個字符串。這些代碼中是否有這些列表? – 2010-06-27 23:05:48

+2

函數不檢索標題字符串,它將它作爲參數傳遞。基本上,當你在你的Wordpress循環中調用'the_title()'時,標題從數據庫中被檢索出來,並通過所有掛鉤在'the_title'過濾器中的函數,然後被打印出來。 不幸的是,大多數過濾器沒有記錄在代碼中,因此找出函數將傳遞什麼參數的最佳方法是搜索Wordpress源代碼中的'apply_filters('filter_name'',隨後的參數將被傳遞 – 2010-06-27 23:52:05

+1

如果你看看'wp-includes/default-filters.php','the_title'的大部分過濾器應該在那裏。 – 2010-06-28 14:56:14

1

嗯,首先,'the_title'不是一個動作,它是一個過濾器。所以這個功能永遠不會發射。所以這不是該功能的缺點,它可能是別的。我建議閱讀插件API並瞭解操作和過濾器之間的區別。過濾器是專門用來做你想做的事,一個簡單的辦法:

http://codex.wordpress.org/Plugin_API/

+0

謝謝,我現在看到了區別。但是,如果我只輸入一個字符串而不是「get_the_title()」函數,那麼它似乎沒有問題。它加載頁面並用該字符串替換標題。 – 2010-06-27 22:15:12