【问题标题】:WooCommerce - Remove variation from product title in order details and emailWooCommerce - 删除订单详细信息和电子邮件中产品标题的变体
【发布时间】:2018-09-28 13:24:06
【问题描述】:

我的一些产品有一个名为“中国”的变体。 WooCommerce 的工作方式是在购物车、订单详细信息和电子邮件中,将变体附加到产品标题中。我想从购物车、结帐、订单详情和电子邮件中的标题中删除“中国”一词。

当前标题:“Apple MacBook Pro 15 - 中国,16GB Ram,512GB SSD”

必填标题:“Apple MacBook Pro 15 - 16GB Ram,512GB SSD”

当它在购物车和结帐页面内时,我设法将它从标题中删除,使用以下代码:

function remove_variation_from_product_title( $title, $cart_item, $cart_item_key ) {
    $_product = $cart_item['data'];

    if ( $_product->is_type( 'variation' ) ) {

        $replace = array( 'China,', 'China' );
        $title = str_replace( $replace, '', $title);

        return apply_filters( 'woocommerce_product_variation_title', $title );
    }

    return $title;
}
add_filter( 'woocommerce_cart_item_name', 'remove_variation_from_product_title', 10, 3 );

但正如您从过滤器中看到的那样,它只会将其从购物车中删除。下单后,订单详情页面以及客户发送的电子邮件中会再次显示完整的标题和变体。

我确实遇到了另一个名为 woocommerce_order_items_meta_display 的过滤器,但无法使用它。

有谁知道我如何过滤整个商店的产品标题,而不仅仅是在购物车和结帐页面中?

谢谢。


更新:

找到了解决办法。 woocommerce_order_item_name 成功了。它还将它应用于发送给客户的电子邮件。

function remove_variation_from_product_title_order( $title, $item, $is_visible ) {

    $_product = $item['data'];
    $replace = array( 'China,', 'China' );
    $title = str_replace( $replace, '', $title);

    return apply_filters( 'woocommerce_product_variation_title', $title );

}
add_filter( 'woocommerce_order_item_name', 'remove_variation_from_product_title_order', 10, 3 );

【问题讨论】:

  • 搜索woocommerce_update_order_item_meta会有帮助

标签: php wordpress woocommerce


【解决方案1】:

找到了。 woocommerce_order_item_name 成功了。它还将它应用于发送给客户的电子邮件。

function remove_variation_from_product_title_order( $title, $item, $is_visible ) {

    $_product = $item['data'];
    $replace = array( 'China,', 'China' );
    $title = str_replace( $replace, '', $title);

    return apply_filters( 'woocommerce_product_variation_title', $title );

}
add_filter( 'woocommerce_order_item_name', 'remove_variation_from_product_title_order', 10, 3 );

【讨论】:

    【解决方案2】:

    我正在解决类似的问题,并且偶然发现了woocommerce_order_item_name。就我而言,WooCommerce 订单通知电子邮件显示带有变体的产品标题(很像您的示例),但还重新列出了属性名称(用于创建变体 - 在本例中为“提交类型”)以及产品标题每个产品都有以下变体,如下所示:

    在线申请 - 完整申请

    提交类型:完整申请

    有谁知道输出是如何精确创建的,如果对woocommerce_order_item_name 应用过滤器可以修改输出,以便删除指定变体的第二行?

    我很难找出究竟什么可以作为参数传递给woocommerce_order_item_name,以及如何输出变体名称。你是怎么找到这个的?

    现在我有一个开始,似乎可以根据产品开头使用的主要产品标题和分隔前缀为我要修改的匹配产品添加条件,但不知道如何查找/更改出现在电子邮件第二行的变体:

    add_filter( 'woocommerce_order_item_name', 'edit_order_item_name');
    
        function edit_order_item_name($item) {
    
            $prefix = 'Online Application - ';
    
            if (substr($item, 0, strlen($prefix)) == $prefix) {
    
            // do something here to remove the variation type and name from appearing below the product name
    
            }
    
            else {
            return $item;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      • 1970-01-01
      • 2022-10-13
      • 2016-05-14
      相关资源
      最近更新 更多