过滤器函数必须接收传递给它们的所有参数吗?

时间:2015-02-18 作者:henrywright

我正在编写一个过滤函数来重定向登录:

function my_filter_func( $redirect_to, $requested_redirect_to, $user) {
    // My code.
}
add_filter( \'login_redirect\', \'my_filter_func\', 10, 3 );
模板文件中的过滤器挂钩是:

$redirect_to = apply_filters( \'login_redirect\', $redirect_to, $requested_redirect_to, $user );
正如你所见,$redirect_to, $requested_redirect_to, $user 传递给我的过滤器函数。我的filter函数接收这些,我可以在函数的代码中使用它们。

My question:

我的函数必须接收所有3个变量吗?或者我可以这样做:

function my_filter_func( $redirect_to ) {
    // My code.
}
add_filter( \'login_redirect\', \'my_filter_func\' );

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您的函数不必接受所有参数,您不能指定接受参数的数量,它将默认只传递第一个参数。

您还可以指定最大为并包括参数总数的任意数目。例如,如果您只需要前2个,这也会起作用:

function my_filter_func( $redirect_to, $requested_redirect_to ) {
    // My code.
}
add_filter( \'login_redirect\', \'my_filter_func\', 10, 2 );
您不能使用比您在add_filter 呼叫例如,这将生成缺少参数2的警告:

function my_filter_func( $redirect_to, $requested_redirect_to ) {
    // My code.
}
add_filter( \'login_redirect\', \'my_filter_func\' );

结束

相关推荐

已忽略php.ini中的最大上传大小更改-如何删除上传大小限制?

我正在进行多站点WP安装,需要从其他Wordpress站点导入内容(.wxr 文件)。当我使用导入WordPress插件时,我得到了以下信息:允许的最大上载大小仅为1MB, 当我设置时100MB 在我的php.ini. 打电话给phpinfo() 告诉我们.ini 值应适用:怎么了?我阅读了upload_max_filesize on this site, 但这一切都不起作用。注意:这只发生在Wordpress上。我有Symfony2个网站,我可以上传100MB以上的文件,所以是的,这是正确的php.in