2013-07-28 97 views
4

我想重寫一個在wordpress中創建SEO標題的插件。過濾器完成這項工作,但我需要動態創建標題。所以我創建標題然後將其傳遞給匿名函數。我有一個創建的標題把這個肯定會更清潔的另一個功能......將變量傳遞給WordPress過濾器中的匿名函數

這工作

function seo_function(){ 

add_filter('wpseo_title', function(){ 
     return 'test seo title'; 
    }); 

} 

這不

function seo_function(){ 

//create title above 
$title="test seo title"; 


    add_filter('wpseo_title', function($title){ 
     return $title; 
    }); 

} 

感謝所有幫助

沒有使用匿名函數的例子 - 這工作,但我仍然無法傳遞一個變量,我不得不復制代碼來創建標題。

功能seo_function(){

//create title above 
$title="test seo title"; 


    add_filter('wpseo_title', 'seo_title'); 

} 

function seo_title(){ 

$title="test"; 

return $title; 

} 
+0

例如調用在過濾函數內部生成標題的函數? – ndm

+0

@ndm爲你添加的例子 – jhodgson4

回答

12

您傳遞變量進入封閉範圍與use關鍵字:

$new_title = "test seo title"; 

add_filter('wpseo_title', function($arg) use ($new_title) { 
    return $new_title; 
}); 

函數($ ARG)的參數將被apply_filters(發送)調用,如其他插件,而不是你的代碼。

另請參閱:Passing a parameter to filter and action functions

+1

啊我明白了,那麼你什麼時候使用函數($ argument){}? – jhodgson4

+1

'function($ arg)'中的參數將由'apply_filters()'調用,例如另一個插件發送,而不是由您的代碼發送。 – fuxia

+0

非常感謝您清除這個! – jhodgson4

0

可以提供自定義過濾器的PARAMS由過濾器定義和過濾器的方式在WordPress的工作。請參閱http://codex.wordpress.org/Plugin_API/Filter_Reference以獲取有關Wordpress中過濾器的文檔。

而且你不是第一次嘗試這個,所以也許這將幫助你(因爲我沒有一個WordPress安裝與測試它): http://wordpress.org/support/topic/change-the-title-dynamically

如果你不能得到它的工作我會建議使用您正在使用的插件的論壇或直接與開發人員聯繫。

相關問題