首页 文章

在Woocommerce购物车项目的自定义字段中显示自定义延期交货文本

提问于
浏览
1

这与以下内容有关:将产品“延期交货”替换为Woocommerce中的自定义字段值

我想在延期交货的购物车商品中显示_backorder_text产品自定义字段值 .

基于Admin product pages custom field displayed in Cart and checkout,这是我的代码:

// Render meta on cart and checkout
add_filter( 'woocommerce_get_item_data', 'rendering_meta_field_on_cart_and_checkout', 10, 2 );
function rendering_meta_field_on_cart_and_checkout( $cart_item_data, $cart_item ) {
    if( isset( $cart_item['_backorder_text'] ) ) {
        $cart_item_data[] = array( 
            "name" => __( "Backorders text", "woocommerce" ), 
            "value" => $cart_item['_backorder_text'] 
        );
    }
    return $cart_item_data;
}

但它不起作用 .

任何帮助表示赞赏 .

1 回答

  • 0

    延续:将产品“延期交货”替换为Woocommerce中的自定义字段值

    要在延期交货的购物车项目(和订单商品)中显示 _backorder_text 产品自定义字段值,请使用以下内容:

    // Display in cart items backorder text on cart and checkout pages
    add_filter('woocommerce_get_item_data', 'display_custom_cart_item_data', 10, 2);
    function display_custom_cart_item_data( $cart_item_data, $cart_item ) {
        if( $cart_item['data']->is_on_backorder( $cart_item['quantity'] ) ) {
            $backorder_text = $cart_item['data']->get_meta('_backorder_text');
        }
    
        if( isset($backorder_text) && ! empty($backorder_text) ) {
            $cart_item_data[] = array(
                'name'  => __("Backordered", "woocommerce"),
                'value' => $backorder_text,
            );
        }
    
        return $cart_item_data;
    }
    
    // Order items: Save "backorder text" as order item meta data and display it everywhere
    add_action('woocommerce_checkout_create_order_line_item', 'save_file_type_as_order_item_meta', 20, 4);
    function save_file_type_as_order_item_meta($item, $cart_item_key, $values, $order) {
        if( $values['data']->is_on_backorder( $values['quantity'] ) ) {
            $backorder_text = $values['data']->get_meta('_backorder_text');
        }
    
        if( isset($backorder_text) && ! empty($backorder_text) ) {
            $item->update_meta_data( __("Backordered", "woocommerce"), $backorder_text );
        }
    }
    

    代码位于活动子主题(或活动主题)的function.php文件中 . 经过测试和工作 .

    enter image description here

相关问题