当有多个参数时,如何返回钩子数据?

时间:2013-05-15 作者:Michael Ecklund

当存在多个参数时,将数据返回到挂钩的正确方法是什么?

Example

apply_filters(\'image_downsize\', false, $attachment->ID, $size)

Attaching a callback function:

function wpse_test_hook($param1, $param2, $param3){

}
add_filter(\'image_downsize\', \'wpse_test_hook\');
如何从回调返回数据,以便它正确返回供挂钩使用?

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

您只能从函数返回一个数据块。这是PHP强制执行的规则。如果需要返回多个数据段,则需要返回一个数组或对象。

不过,使用过滤器,您不能只决定返回什么。您必须返回筛选器要返回的内容。例如the_content 回调需要返回字符串。返回数组无效。您只需在帖子正文中打印单词“Array”。另一方面,如果传递给您一个数组,则应返回一个数组。

因此,当一些过滤器传入多个数据段时,您只需要修改并返回一个数据段,通常是第一个参数。在一般情况下,您需要:

function wpse_test_hook($param1, $param2, $param3){
    // whatever you need to do
    return $param1;
}
add_filter(\'some_filter\', \'wpse_test_hook\');
但请检查过滤器的使用方式。在以下情况下:image_downsize 钩住两个参数--$id$size-- 但是image_downsize 作用just returns whatever the callback gives it. 如果使用该钩子,则意味着完全劫持函数的其余部分。更常见的钩子the_content. 您仍然只能返回一块数据,并且仍然必须返回正确类型的数据,否则肯定会在某个地方造成麻烦。

通过操作,您有时可以修改多条信息,但操作根本不会返回,因此PHP限制不是问题。

结束

相关推荐

TinyMCE Plugin Parameter

有人能告诉我,如果有任何地方我可以找到这些TinyMCE插件的用途吗?$in[\'plugins\']=\'inlinepopups,tabfocus,paste,media,fullscreen,wordpress,wpeditimage,wpgallery,wplink,wpdialogs,wpfullscreen\'; 我想知道如果我删除wordpress 编辑将停止删除我的<p> 标签,但我也丢失了html 编辑器视图。