我已经在我的woocommerce网站上定制了后台文本,并希望在订单确认电子邮件中添加相同的文本。
例如,我有我的购物车和结账,显示“在股票”或“作出订购”下的(变化)元为每个产品。
为了获得结果,我将以下代码添加到cart.php模板文件中,并添加了类似的代码-- review-order.php模板文件,以使其显示在结帐页面上:
// 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”。
是否有一种方法可以在电子邮件确认中禁用默认的后台元,并添加自定义元来检查产品是否处于后台(并需要后台通知),然后显示自定义文本?
发布于 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钩子和通过参数,我们可以获得有关产品的必要信息。
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中完成的)
https://stackoverflow.com/questions/62254070
复制相似问题