【问题标题】:Display custom backorder text from a custom field in Woocommerce cart items显示来自 Woocommerce 购物车项目中自定义字段的自定义延期交货文本
【发布时间】:2019-03-11 14:34:34
【问题描述】:

这与: Replace product "on backorder" to a custom field value in 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;
}

但它不起作用。

感谢任何帮助。

【问题讨论】:

  • 这是一个插件的原始部分在这里(我最初在那里发布,但被告知要发新帖子):stackoverflow.com/questions/50267393/…
  • 嗨,谢谢。然而,由于某种原因,“可延期交货”文本出现在自定义文本下方。延期交货:24 - 48 小时内准备就绪* 延期交货时提供

标签: php wordpress woocommerce cart custom-fields


【解决方案1】:

续:Replace product "on backorder" to a custom field value in 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 文件中。经过测试并且可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 2017-10-09
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2019-07-21
    • 2018-07-16
    相关资源
    最近更新 更多