组合两个不同的过滤器回调函数

时间:2018-09-24 作者:JoaMika

我目前正在使用这段代码,它工作得很好。

function add_data_attribute($tag, $handle) {
   if ( \'chargebee\' !== $handle )
    return $tag;
    return str_replace( \' src\', \' data-cb-site="mydomain" src\', $tag );
}
add_filter(\'script_loader_tag\', \'add_data_attribute\', 10, 2);
但是,我需要将此代码与另一个标记相结合:

function google_maps_script_attributes( $tag, $handle) {
    if ( \'google-maps\' !== $handle ) {
        return $tag;
  }
    return str_replace( \' src\', \' async="async" defer src\', $tag );
}
add_filter(\'script_loader_tag\', \'google_maps_script_attributes\', 10, 2);
我应该将两个单独的函数称为最佳实践,还是以某种方式将这两个函数组合在一起更快更好?

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

我认为您可以甚至应该组合过滤器以保留代码DRY.

add_filter(\'script_loader_tag\', function( $tag, $handle ) {

 if ( \'chargebee\' == $handle ) :
    return str_replace( \' src\', \' data-cb-site="mydomain" src\', $tag );
 elseif( \'google-maps\' == $handle ) :
    return str_replace( \' src\', \' async="async" defer src\', $tag );
 endif;

 return $tag;

}, 10, 2);

结束

相关推荐

对WooCommerce的Functions.php更改不起作用

我正在尝试将其添加到函数中。php。在我的另一个站点上的测试实验室中,它可以很好地添加测试信息。但在这个网站上,我试图把它添加到什么都没有发生的情况下。该网站正在使用最新的woocommerce运行一个建筑节俭主题。有什么想法吗?我基本上只是想在每个产品页面上添加一行类似于免责声明但无法添加的文本。add_action(\'woocommerce_before_add_to_cart_form\',\'print_something_below_short_description\');