随处显示和保存产品的格式化尺寸

受到 WooCommerce @LoicTheAztec 答案中显示购物车和订单商品重量的启发,通过用产品尺寸替换产品重量进行一些更改,我能够在购物车商品和订单商品上的任何位置显示商品尺寸。


问题是我不知道如何显示标签或形容词:


西班牙网站的长厘米 x 宽厘米 x 高厘米。


我真的很感谢任何帮助。


// Display the cart item dimensions in cart and checkout pages 

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

function display_custom_item_data_dimensions( $cart_item_data, $cart_item ) { 

    if ( $cart_item['data']->has_dimensions() > 0 ){ 

        $cart_item_data[] = array( 'name' => __( 'Dimensions', 'woocommerce' ), 'value' => $cart_item['data']->get_dimensions() . ' ' . get_option('woocommerce_dimensions_unit') ); 

    } 

    return $cart_item_data; 

}


// Save and Display the order item dimensions (everywhere) 

add_action( 'woocommerce_checkout_create_order_line_item', 'display_order_item_data_dimensions', 20, 4 ); 

function display_order_item_data_dimensions( $item, $cart_item_key, $values, $order ) { 

    if ( $values['data']->has_dimensions() > 0 ){ 

        $item->update_meta_data( __( 'Dimensions', 'woocommerce' ), $values['data']->get_dimensions() . ' ' . get_option('woocommerce_dimensions_unit') ); 

    } 

}


慕的地10843
浏览 61回答 1
1回答

至尊宝的传说

首先,该方法get_dimensions()有一个显示格式化尺寸的选项,因此您可以使用以下命令更改尺寸格式,以根据需要添加尺寸标签:add_filter( 'woocommerce_format_dimensions', 'custom_formated_product_dimentions', 10, 2 );function custom_formated_product_dimentions( $dimension_string, $dimensions ){    $text_domain    = 'woocommerce';    $dimension_unit = get_option('woocommerce_dimensions_unit');    if ( empty( $dimension_string ) )        return __( 'N/A', $text_domain );    // Set here your new array of dimensions based on existing keys/values    $new_dimensions = array(        __('width', $text_domain)  => $dimensions['width'],        __('length', $text_domain) => $dimensions['length'],        __('height', $text_domain) => $dimensions['height'],    );    $dimensions = array_filter( array_map( 'wc_format_localized_decimal', $new_dimensions ) );    // Loop through new dimensions array adding spanish labels     foreach( $dimensions as $key => $dimention ){        $dimensions[$key] = ucfirst($key) . ' ' . $dimention. ' ' . $dimension_unit;    }    return implode( ' × ',  $dimensions);}对于西班牙语,您可以使用Loco 插件翻译字符串,也可以替换:$new_dimensions = array(    __('width', $text_domain)  => $dimensions['width'],    __('length', $text_domain) => $dimensions['length'],    __('height', $text_domain) => $dimensions['height'],);经过:$new_dimensions = array(    __('longitud', $text_domain) => $dimensions['width'],    __('ancho', $text_domain)    => $dimensions['length'],    __('alto', $text_domain)     => $dimensions['height'],);现在,在您的代码中,您将使用get_dimensions( true )方法来显示格式化尺寸,如下所示:// Display the cart item dimensions in cart and checkout pagesadd_filter( 'woocommerce_get_item_data', 'display_custom_item_data_dimensions', 10, 2 );function display_custom_item_data_dimensions( $cart_item_data, $cart_item ) {    $product =  $cart_item['data'];    if ( $product->has_dimensions() ){        $cart_item_data[] = array(            'name' => __( 'Dimensions', 'woocommerce' ),            'value' => $product->get_dimensions( true ),        );    }    return $cart_item_data;}// Save and Display the order item dimensions (everywhere)add_action( 'woocommerce_checkout_create_order_line_item', 'display_order_item_data_dimensions', 10, 4 );function display_order_item_data_dimensions( $item, $cart_item_key, $values, $order ) {    $product =  $values['data'];    if ( $product->has_dimensions() ){        $item->update_meta_data( __( 'Dimensions', 'woocommerce' ), $product->get_dimensions( true ) );    }}代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。注意:由于has_dimensions()条件方法返回布尔值,因此它不需要任何其他内容作为条件。
打开App,查看更多内容
随时随地看视频慕课网APP