将多维数组与筛选器一起使用

时间:2018-02-20 作者:saurav.rox

我正在尝试使用add_filter. 我可以像这样传递单个值:

add_filter(\'example_filter\', \'my_example_filter_1\' );
function my_example_filter_1( $array ){
    $array[]=\'tax1\';
    return $array;
}
add_filter(\'example_filter\', \'my_example_filter_2\' );
function my_example_filter_2( $array ){
    $array[]=\'tax2\';
    return $array;
}
add_filter(\'example_filter\', \'my_example_filter_3\' );
function my_example_filter_3( $array ){
    $array[]=\'tax3\';
    return $array;
}

print_r( apply_filters( \'example_filter\', array()) );
但如果数组的格式如下,我无法实现它。

function wte_fixed_starting_dates_license()
{
    $wp_travel_engine = get_option( \'wp_travel_engine_license\' );
    $wte_fixed_departure_license_key = isset( $wp_travel_engine[\'wte_fixed_departure_dates_license_key\'] ) ? esc_attr( $wp_travel_engine[\'wte_fixed_departure_dates_license_key\'] ):\'\';// setup the updater
    $array = 
    array( 
        \'version\' => \'1.0.0\',       // current version number
        \'license\' => $wte_fixed_departure_license_key,  // license key (used get_option above to retrieve from DB)
        \'item_id\' => WTE_FIXED_DEPARTURE_ITEM_ID,   // id of this product in EDD
        \'author\'  => \'WP Travel Engine\',  // author of this plugin
        \'url\'     => home_url()
    );
    return $array;
}
add_filter( \'wp_travel_engine_licenses\', \'wte_fixed_starting_dates_license\' );
我使用相同的过滤器传递另一个数组,如下所示:

function wte_authorize_net_license($array)
{
    $wp_travel_engine = get_option( \'wp_travel_engine_license\' );
    $wte_authorize_net_license_key = isset( $wp_travel_engine[\'wte_authorize_net_dates_license_key\'] ) ? esc_attr( $wp_travel_engine[\'wte_authorize_net_dates_license_key\'] ):\'\';// setup the updater
    $array = 
    array( 
        \'version\' => \'1.0.0\',       // current version number
        \'license\' => $wte_authorize_net_license_key,    // license key (used get_option above to retrieve from DB)
        \'item_id\' => WTE_FIXED_DEPARTURE_ITEM_ID,   // id of this product in EDD
        \'author\'  => \'WP Travel Engine\',  // author of this plugin
        \'url\'     => home_url()
    );
    return $array;
}
add_filter( \'wp_travel_engine_licenses\', \'wte_authorize_net_license\' );
如果我像这样传递多个数组,那么我只会在像这样的数组中得到后面的值。

Array ( [version] => 1.0.0 [license] => [item_id] => 79 [author] => WP Travel Engine [url] => http://localhost/wordpress )
打印阵列时应该有两个版本、两个许可证和其他参数,对吗?还是我遗漏了什么?

任何帮助都是值得赞赏的。谢谢

1 个回复
SO网友:Maxim Sarandi

如果您使用add_filter 您应该接收一些参数,过滤than并将其返回。否则,您将丢失以前定义的数据。

function wte_fixed_starting_dates_license($array) {
另请参见array_merge 作用

以及返回正确数组的示例。license 为空,但其他元素可以。

结束

相关推荐

WordPress Plugins won't save

我有一个WordPress网站,我刚刚接管了一个客户,因此我没有能力与以前的网站管理员/开发人员交谈。该网站使用的是YOOtheme对Subway稍加修改的版本。为了更新插件位置,Subway的一部分有“小部件选项”。我无法更改外观或小部件显示的页面,因为我无法保存任何内容。它看起来像已保存,但没有保存,或者您会在保存按钮旁边看到“加载循环”,它一直在运行。Things to note:<WordPress和插件是最新的。在我们转移到新服务器之前,插件是可更新的。新服务器有一个max\\u inpu