【发布时间】: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