4

我正在尝试覆盖在 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;
    });

}

谢谢你的帮助

不使用匿名函数示例 - 这可行,但我仍然无法传递变量,我必须复制代码来创建标题。

函数 seo_function(){

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


    add_filter('wpseo_title', 'seo_title');

}

function seo_title(){

$title="test";

return $title;

}
4

2 回答 2

13

use使用关键字将变量传递到闭包范围:

$new_title = "test seo title";

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

function($arg) 中的参数将由 apply_filters() 调用发送,例如另一个插件,而不是您的代码。

另请参阅:将参数传递给过滤器和操作函数

于 2013-07-28T12:30:59.650 回答
0

您可以提供给自定义过滤器的参数由过滤器和过滤器在 Wordpress 中的工作方式定义。有关 Wordpress 中过滤器的文档,请参阅http://codex.wordpress.org/Plugin_API/Filter_Reference

你也不是第一个尝试这个的人,所以也许这会对你有所帮助(因为我没有安装 Wordpress 来测试它): http ://wordpress.org/support/topic/change-the-title-dynamically

如果您无法使其正常工作,我建议您使用您正在使用的插件的论坛或直接联系开发人员。

于 2013-07-28T12:22:00.177 回答