首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WooCommerce订单电子邮件更改/删除产品元中的"backordered:#“

问WooCommerce订单电子邮件更改/删除产品元中的"backordered:#“
EN

Stack Overflow用户
提问于 2020-06-08 02:24:12
回答 1查看 2.1K关注 0票数 2

我已经在我的woocommerce网站上定制了后台文本,并希望在订单确认电子邮件中添加相同的文本。

例如,我有我的购物车和结账,显示“在股票”或“作出订购”下的(变化)元为每个产品。

为了获得结果,我将以下代码添加到cart.php模板文件中,并添加了类似的代码-- review-order.php模板文件,以使其显示在结帐页面上:

代码语言:javascript
复制
// Backorder notification.
if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
    echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="cart_stock_notification made-to-order">' . esc_html__( 'Made-To-Order', 'woocommerce' ) . '</p>', $product_id ) );
}
else if ( !$_product->backorders_require_notification() && !$_product->is_on_backorder( $cart_item['quantity'] ) ) {
    echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="cart_stock_notification made-to-order">' . esc_html__( 'Made-To-Order', 'woocommerce' ) . '</p>', $product_id ) );
}
else {
    echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="cart_stock_notification in-stock">' . esc_html__( 'In Stock', 'woocommerce' ) . '</p>', $product_id ) );
}

现在我想在我的订单确认邮件中显示同样的东西。我特别想在客户的电子邮件,但管理电子邮件也好。

现在,在产品元中,任何退货定购产品都会出现为"Backordered:#“,以表示已订购产品的数量。

我想删除落后的元,并取代它使用相同的逻辑在购物车和结账页,以便它将显示相同的股票状态的电子邮件。

我知道逆序元是从set_backorder_meta函数在class-wc-order-item-product.php中应用的,但是我不想编辑类文件,因为它将被更新覆盖。

我也不想仅仅改变文字,我需要改变逻辑。如果我可以禁止set_backorder_meta申请电子邮件,我想我可以连接到woocommerce_order_item_meta_end,或者只编辑email-order-items.php模板文件(对我来说两者都行)。

我的问题是,我似乎无法检查项目"backorders_require_notification“和/或"is_on_backorder”。

是否有一种方法可以在电子邮件确认中禁用默认的后台元,并添加自定义元来检查产品是否处于后台(并需要后台通知),然后显示自定义文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 07:59:08

在email-order-items.php模板中,使用wc_display_item_meta()函数。

如果我们再看一看,我们会发现这个函数在wc-template-functions.php中

https://github.com/woocommerce/woocommerce/blob/master/includes/wc-template-functions.php

因此,我们可以覆盖输出通过woocommerce_display_item_meta钩子和通过参数,我们可以获得有关产品的必要信息。

代码语言:javascript
复制
function filter_woocommerce_display_item_meta ( $html, $item, $args ) { 
    // Get product
    $product = $item->get_product();
    
    // Html
    if ( $product->backorders_require_notification() && $product->is_on_backorder( $item['quantity'] ) ) {
        $html = '<ul class="wc-item-meta"><li><strong class="wc-item-meta-label" style="float: left; margin-right: .25em; clear: both">Made-To-Order</strong></li></ul>';       
    } else if ( !$product->backorders_require_notification() && !$product->is_on_backorder( $item['quantity'] ) ) {
        $html = '<ul class="wc-item-meta"><li><strong class="wc-item-meta-label" style="float: left; margin-right: .25em; clear: both">Made-To-Order</strong></li></ul>';
    } else {
        $html = '<ul class="wc-item-meta"><li><strong class="wc-item-meta-label" style="float: left; margin-right: .25em; clear: both">In stock</strong></li></ul>';
    }
    
    return $html;
}
add_filter( 'woocommerce_display_item_meta', 'filter_woocommerce_display_item_meta', 10, 3 );

提示:为了保持输出更动态,您可以通过args重写输出(您可以看到这是如何在wc-template-functions.php中完成的)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62254070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档