亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WooCommerce 訂單電子郵件更改/從產品元中刪除“延期交貨:#”

WooCommerce 訂單電子郵件更改/從產品元中刪除“延期交貨:#”

PHP
炎炎設計 2023-05-12 14:53:01
我在我的 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 ) );}現在我希望在我的訂單確認電子郵件中顯示同樣的內容。我特別希望它出現在客戶電子郵件中,但管理員電子郵件也可以?,F在,任何延期交貨的產品都在產品元數據中顯示為“延期交貨:#”,表示延期交貨的產品數量。我想刪除那個延期交貨的元數據,并用購物車和結帳頁面上使用的相同邏輯替換它,這樣它將在電子郵件中顯示相同的庫存狀態。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”。有沒有辦法在電子郵件確認中禁用默認的延期交貨元數據并添加自定義元數據以檢查產品是否處于延期交貨狀態(并且需要延期交貨通知),然后顯示自定義文本?
查看完整描述

1 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

在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)



查看完整回答
反對 回復 2023-05-12
  • 1 回答
  • 0 關注
  • 131 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號