当前位置: 首页 > 知识库问答 >
问题:

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

仲承福
2023-03-14

灵感来自于在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') ); 
    } 
}

共有1个答案

吕俊哲
2023-03-14

首先,方法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\u dimensions(true)方法显示格式化的维度,如下所示:

// 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 ) {
    $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()是一个返回布尔值的条件方法,因此它不需要任何其他条件。

类似:将产品尺寸输出中的“长度”重命名为“直径”

 类似资料:
  • 我想在“销售”和“常规”价格下显示每个产品的总储蓄,就像下面的图片一样:https://ibb.co/T8BxH9z.储蓄金额是计算出来的,它是可见的,但由于某种原因,我的货币不可见。所以,我想显示它像这个例子:"Ušteda: 2291,87 kn",现在,只有金额显示。网站链接:https://shop.mirakul.com.hr/. 这是我正在使用的代码。你知道为什么货币不见了吗? 提前感

  • 我的Arduino代码: 我的处理代码: 我已经非常努力地去理解处理,但是我仍然不明白如何根据arduino发送的数据绘制图形。我认为我的问题主要是线部分。我不知道如何画一条连接上一个点和新点的线。 但总的来说,这个问题甚至不起作用......问题在哪里:(?

  • 我在我的WooCommerce 2.6.4商店上使用可变产品,我为同一产品的两种不同变体添加了不同的价格。当选择两个变体中的一个时,根本不显示任何价格。下面的div只是空的: 我希望预选的变异价格显示为默认,而非预选的变异价格应在选择时动态替换。几乎像这个演示,除了从一个预选的项目和价格应该显示为默认。

  • fmt::Debug 看起来并不简洁,然而它对自定义输出外观通常是有好处的。而fmt::Display是通过手动的方式来实现,采用了{}来打印标记。实现方式看起来像这样: // (使用 `use`)导入 `fmt` 模块使 `fmt::Display` 可用 use std::fmt; // 定义一个结构体,使用 `fmt::Display` 来实现。这只是简单地给元组结构体`Structure`

  • 我的商店里的价格是带税显示的,我还使用{price_unclused_tax}后缀来显示不含税的价格。但可变产品存在一个问题。。。商店只显示含税价格(促销时显示原价),但不显示不含税价格。两种可变产品的价格相同。我尝试使用以下代码: https://tomjesch.com/display-woocommerce-products-with-and-without-tax/ 但它不能正常工作-它显

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