WooCommerce-删除订单详细信息和电子邮件中产品标题的变化

时间:2018-09-28 13:24:06

标签: php wordpress woocommerce

我在某些产品上有一个称为“中国”的变体。 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 );

2 个答案:

答案 0 :(得分:0)

找到了。 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 );

答案 1 :(得分:0)

我正在研究类似的问题,也偶然发现了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;
    }
}