【问题标题】:Changing the order item meta data in WooCommerce email notifications在 WooCommerce 电子邮件通知中更改订单项元数据
【发布时间】:2022-01-03 06:57:18
【问题描述】:

我需要更改/自定义 WooCommerce 电子邮件通知的特定订单商品元数据,但我找不到解决方案。

我找到了one,但它是用于从 Woocommerce 电子邮件通知中取消设置不需要的订单商品元数据。

是否可以修改上述代码以更改电子邮件的元数据?

我尝试使用$formatted_meta[$key] = 'new value';,但这并没有得到预期的结果。有什么建议吗?

add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'unset_specific_order_item_meta_data', 10, 2);
function unset_specific_order_item_meta_data($formatted_meta, $item){
    // Only on emails notifications
    if( is_admin() || is_wc_endpoint_url() )
        return $formatted_meta;

    foreach( $formatted_meta as $key => $meta ){
        $formatted_meta[$key] = 'new value';
    }
    return $formatted_meta;
}

【问题讨论】:

    标签: wordpress woocommerce metadata orders email-notifications


    【解决方案1】:

    如果你想通过你正在使用的当前钩子来调整这些值,你可以这样做:

    function filter_woocommerce_order_item_get_formatted_meta_data( $formatted_meta, $item ) {
        // Only on emails notifications
        if ( is_admin() || is_wc_endpoint_url() )
            return $formatted_meta;
    
        foreach ( $formatted_meta as $key => $meta ) {
            $formatted_meta[$key]->display_key = 'new key';
            $formatted_meta[$key]->display_value = 'new value';
        }
        
        return $formatted_meta;
    }
    add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'filter_woocommerce_order_item_get_formatted_meta_data', 10, 2 );
    

    但是,要知道,woocommerce_order_item_display_meta_keywoocommerce_order_item_display_meta_value 过滤器钩子更适合使用上述钩子:

    function filter_woocommerce_order_item_display_meta_key( $display_key, $meta, $item ) {
        // Only on emails notifications
        if ( is_admin() || is_wc_endpoint_url() )
            return $display_key;
    
        // Display key
        $display_key = 'My new key';
        
        return $display_key;
    }
    add_filter( 'woocommerce_order_item_display_meta_key', 'filter_woocommerce_order_item_display_meta_key', 10, 3 );
    
    function filter_woocommerce_order_item_display_meta_value( $display_value, $meta, $item ) {
        // Only on emails notifications
        if ( is_admin() || is_wc_endpoint_url() )
            return $display_value;
    
        // Display value
        $display_value = 'My new value';
            
        return $display_value;
    }
    add_filter( 'woocommerce_order_item_display_meta_value', 'filter_woocommerce_order_item_display_meta_value', 10, 3 );
    

    然后是通过 if 条件来确定具体涉及哪些调整的问题,因为这些目前通常通过我的回答应用

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 2017-09-20
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 2019-09-23
      • 2018-06-28
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多