在 WooCommerce 订单和电子邮件上保存并显示产品自定义元

好的,基本上我们在 WooCommerce 商店中使用 ACF 创建了一个自定义字段,以便为特定产品添加“发货延迟”通知。

以下是我们所取得成果的演示:https ://www.safe-company.com/shop/machines/uvc-disinfection-lamp/

单个产品页面参考图片

然后,我们设法使用 Elementor(页面构建器)将此通知放入单个产品页面中,然后将此信息添加到购物车和结帐页面中的商品数据中,并将以下代码添加到我们的functions.php中

// Render the custom product field in cart and checkout

add_filter( 'woocommerce_get_item_data', 'wc_add_shipping_delay', 10, 2 );

function wc_add_shipping_delay( $cart_data, $cart_item ) 

{

    $custom_items = array();


    if( !empty( $cart_data ) )

        $custom_items = $cart_data;


    // Get the product ID

    $product_id = $cart_item['product_id'];


    if( $custom_field_value = get_post_meta( $product_id, 'shipping_delay_for_out_of_stock_items', true ) )

        $custom_items[] = array(

            'name'      => __( 'Shipping Delay', 'woocommerce' ),

            'value'     => $custom_field_value,

            'display'   => $custom_field_value,

        );


    return $custom_items;

}

购物车页面中的项目元中的自定义字段

我们现在的问题是,我们需要将此运送延迟通知添加到电子邮件中(分别显示在包含此数据的每个项目下方)以及订单页面上。怎么可能呢?因为我已经检查了很多关于此的线程,但所有这些线程都是使用动态字段(用户在购买时完成)完成的,但我们的案例场景完全不同。



UYOU
浏览 61回答 1
1回答

小怪兽爱吃肉

以下内容会将您的自定义字段保存为订单项元数据并在各处显示:// Save and display "shipping delay" on order items everywhereadd_filter( 'woocommerce_checkout_create_order_line_item', 'action_wc_checkout_create_order_line_item', 10, 4 );function action_wc_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {    // Get the shipping delay    $value = $values['data']->get_meta( 'shipping_delay_for_out_of_stock_items' );    if( ! empty( $value ) ) {        // Save it and display it        $item->update_meta_data( __( 'Shipping Delay', 'woocommerce' ), $value );    }}   代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。
打开App,查看更多内容
随时随地看视频慕课网APP