无法理解Apply_Filter逻辑

时间:2019-12-24 作者:user3013494

以前从未创建过自过滤器。在我的插件中,我将变量作为数组。我希望其他用户可以在不修改插件的情况下更改此阵列。我正在我的plugin.php:

<?php
/*
Plugin Name: Test plugin
*/

$arr = [
    \'val\',
    \'val2\',
    \'val3\'
];

$arr = apply_filters( \'my_hook\', $arr );
print_r( $arr );
在我的functions.php 我把这个代码:

add_filter( \'my_hook\', \'modify\', 10, 1 );

function modify( $arr ) {
    unset($arr[0]);
    return $arr;
}
我期望没有第一个元素的输出,但它输出具有3个值的原始数组;

怎么了?

1 个回复
SO网友:user3013494

谢谢你的回答。根据上面的评论,我修改了代码。现在它工作了。这是正确的方式吗?

<?php
/*
Plugin Name: Test plugin
*/

$arr = [];

add_action( \'init\', \'set_var_data\' );

function set_var_data() {
    global $arr;

    $arr = [
        \'val\',
        \'val2\',
        \'val3\'
    ];

    $arr = apply_filters( \'my_hook\', $arr );
}

print_r( $arr );

相关推荐

为内置钩子调用do_action和Apply_Filters是否安全?

我正在开发一个插件,它需要复制一些内置的WordPress逻辑。(此逻辑不能用任何内置方法调用,也不能独立连接到。)在这个动作序列中,WordPress的正常行为是调用动作挂钩(do_action(\'wp_login\', ...)) 和过滤器挂钩(apply_filters(\'login_redirect\', ...)).如果在对应于在Core中调用它们的时间点调用它们,那么直接从我的插件调用这些内置钩子是否安全(并且是可以接受的做法)?或者,其他与此相关的开发人员期望在非常特定的时间执行操作的风