2013-07-28 96 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

如果你不能得到它的工作我会建议使用您正在使用的插件的论坛或直接与开发人员联系。

相关问题