2013-10-09 109 views
3

我有一個使用apply_filters這樣的插件:WordPress的過濾掉不添加

$additional_fields = apply_filters('attachment_meta_add_fields', $additional_fields); 

在我的主題的functions.php,我做的:

function addAttachmentMeta($additionalFields) { 
    return $addtionalFields; 
} 
add_filter('attachment_meta_add_fields', 'addAttachmentMeta', 1, 1); 

但功能addAttachmentMeta從來沒有運行。

如何更改我的應用或添加過濾器語句以使addAttachmentMeta被調用?

編輯: 這是我根據關於如何添加附加元字段的教程編寫的自定義插件。整個來源在這裏:http://pastebin.com/7NcjDsK5。正如我在評論中提到的,我知道這是正在運行和工作,因爲我可以在此插件文件中添加其他字段,但不使用過濾器,因爲過濾器不會被添加。

我可以在apply_filters語句之前和之後看到var_dumps,但我指出的add_filter函數永遠不會被調用。

+0

嘗試更改優先級? – codepixlabs

+0

0 - 1000,仍然不會運行。請注意,我沒有嘗試0到1000之間的每一個數字。 – tubaguy50035

+1

是那個插件目前在你的wordpress上有效嗎? – codepixlabs

回答

4

根據order WordPress' core loads,在加載並執行所有插件後調用function.php。

您需要確保您的插件中的apply_filters()在調用add_filter()後運行。否則,在你的過濾器被「應用」的地方,add_filter()根本還沒有被調用。

你可以做的是使用一個鉤子來使你的插件的一部分在functions.php加載後運行。你可以使用add_action('after_setup_theme', 'function_name')鉤子。

將函數內的最後三行插入函數中,並在functions.php運行後執行。

function addAttachmentMeta() { 
    $additional_fields = array(); 
    $additional_fields = apply_filters('attachment_meta_add_fields', $additional_fields); 
    $am = new Attachment_Meta($additional_fields); 
} 
add_action('after_setup_theme', 'addAttachmentMeta'); 
+0

我也在我的插件中使用'add_filter('attachment_fields_to_edit',array($ this,'addFields'),11,2);'。如果我調整它的運行時間,看起來好像這個過濾器永遠不會被添加。 – tubaguy50035

+0

這是一個相關的問題?或者這是上述建議修復的結果? – mushroom

+0

建議修復的結果。 – tubaguy50035