我试图覆盖在wordpress中创建SEO标题的插件。过滤器完成工作,但我需要动态创建标题。所以我创建标题然后将其传递给匿名函数。我可以有另一个功能,创建标题,这肯定会更清洁......
这有效
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;
});
}
感谢您的帮助
乔
不使用匿名函数示例 - 这可行,但我仍然无法传递变量,我必须重复代码才能创建标题。
function seo_function(){
//create title above
$title="test seo title";
add_filter('wpseo_title', 'seo_title');
}
function seo_title(){
$title="test";
return $title;
}
答案 0 :(得分:11)
使用use
关键字将变量传递到闭包范围:
$new_title = "test seo title";
add_filter( 'wpseo_title', function( $arg ) use ( $new_title ) {
return $new_title;
});
函数($ arg)中的参数将由apply_filters()调用发送,例如另一个插件,而不是您的代码。
答案 1 :(得分:0)
您可以提供给自定义过滤器的参数由过滤器和过滤器在Wordpress中的工作方式定义。有关Wordpress中过滤器的文档,请参阅http://codex.wordpress.org/Plugin_API/Filter_Reference。
此外,您不是第一次尝试这样做,所以这可能会对您有所帮助(因为我没有安装Wordpress进行测试): http://wordpress.org/support/topic/change-the-title-dynamically
如果您无法正常工作,我建议您使用您正在使用的插件论坛或直接与开发者联系。