是否可以向添加到筛选器挂钩的自定义函数添加参数?

时间:2011-08-04 作者:darrinb

示例:我试图使用posts_orderby 像这样过滤:

add_filter(\'posts_orderby\', \'favorites_orderby\');
$new_query = new WP_Query($args);
remove_filter(\'posts_orderby\', \'favorites_orderby\');
thefavorites_orderby() 功能如下:

function favorites_orderby($post_in){
    if(is_array($post_in))
        $post_in_str = implode(\',\', $post_in);
    return $post_in_str;
}
$post_in 是一个基于以前的单独db查询更改的数组,因此我需要能够将其传递到favorites_orderby() 作用基本上,它是一个post ID数组,需要将其提供给WP\\U查询实例化ORDER BY 参数,以便将生成的db请求设置为:ORDER BY FIELD(ID, 6, 18, 90, 12).

除了传递post ID数组之外,其他一切都正常($post_in) 到favorites_orderby()

任何帮助都将不胜感激!

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

否,筛选器根据对筛选器的调用获取参数。基本上,过滤器从apply\\u filters函数调用获取输入。

如果要通过其他方式传入数据,请使用全局变量或包装要在类实例中使用的代码和数据。

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴