使用ADD_FILTER将数组合并到现有数组

时间:2019-09-06 作者:Kolawole Emmanuel Izzy

我正在开发一个插件,我希望能够使用apply_filters(). 我有一个这样的设置,这是默认值;

print_r( apply_filters( \'some_example_hook\', array(
    \'Hello1\'    =>  \'HELL0\',
    \'Hello2\',   =>  \'HELL1\',
    \'Hello3\',   =>  \'HELL2\',
    \'Hello4\',   =>  \'HELL3\',
) ) );
现在我希望能够添加到上面的数组中(以便扩展默认值),但每次创建新函数和add\\u filter时,它都会用这个新数组覆盖数组中的所有内容。这就是我的意思;

add_filter( \'some_example_hook\', \'add_yourself_to_some_examplehook\' );
function add_yourself_to_some_examplehook($args) {
    $args = array(
        \'Hello5\'    => \'HELL4\'
    ); 
    return $args;
}
输出将变为;

Array ( [Hello5] => HELL4 )
而不是;

Array ( 
    [Hello1] => HELL0,
    [Hello2] => HELL1,
    [Hello3] => HELL2,
    [Hello4] => HELL3,
    [Hello5] => HELL4,
)
因此,我可以轻松地在任何地方和任何时候将数组添加到过滤器中(正如我们在上面从任何地方或任何插件所做的那样,它应该只将数组添加到过滤器中,并使下面的代码有效);

if ( in_array(\'HELL4\', apply_filters( \'some_example_hook\', array(
    \'Hello1\'    =>  \'HELL0\',
    \'Hello2\',   =>  \'HELL1\',
    \'Hello3\',   =>  \'HELL2\',
    \'Hello4\',   =>  \'HELL3\',
  ) ) ) ) {
       //Do Something
       // THIS WILL BE VALID because we have added it using add_filter above
 }
我在这里试过这个方法Insert new element to array with add_filter 但结果就是这样Array ( [Hello5] => HELL4 ) ... 它不会将数组附加到现有数组。不知道我做错了什么。

提前感谢您的帮助

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

您正在覆盖$args 在里面add_yourself_to_some_examplehook(). 根据您想要实现的目标,您应该添加新项目:

add_filter( \'some_example_hook\', \'add_yourself_to_some_examplehook\' );
function add_yourself_to_some_examplehook($args) {
    $args[ \'Hello5\' ] = \'HELL4\'; // <-- Note the syntax here.

    return $args;
}

相关推荐

为什么WordPress在未登录时会将与管理员相关的脚本(例如,Reaction、ReactDOM、Redux、Hooks、TinyMCE等)放入队列?

为了提高我的网站的性能,我注意到Wordpress在前端加入了许多与管理相关的脚本和样式表。我想知道我怎样才能阻止这一切的发生。。。我正在考虑将所有的违规行为都退出队列,但我的服务器响应时间会稍微慢一点。是否有一种经过测试的方法可以做到这一点?