Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 随处显示和保存产品的格式化尺寸_Php_Wordpress_Woocommerce_Hook Woocommerce_Dimension - Fatal编程技术网

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

Php 随处显示和保存产品的格式化尺寸,php,wordpress,woocommerce,hook-woocommerce,dimension,Php,Wordpress,Woocommerce,Hook Woocommerce,Dimension,受@LoicTheAztec回答的启发,通过将产品重量替换为产品尺寸进行了一些更改,我能够在购物车项目和订单项目上到处显示项目尺寸 问题是我不知道如何显示标签或形容词: 西班牙场地的纵向cm x安科cm x阿尔托cm 我真的很感谢你的帮助 // Display the cart item dimensions in cart and checkout pages add_filter( 'woocommerce_get_item_data', 'display_custom_item_data

受@LoicTheAztec回答的启发,通过将产品重量替换为产品尺寸进行了一些更改,我能够在购物车项目和订单项目上到处显示项目尺寸

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

西班牙场地的纵向cm x安科cm x阿尔托cm

我真的很感谢你的帮助

// 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') ); 
    } 
}

首先,方法
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);
}
对于西班牙语,您可以使用或替换以下内容翻译字符串:

$new_dimensions = array(
    __('width', $text_domain)  => $dimensions['width'],
    __('length', $text_domain) => $dimensions['length'],
    __('height', $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文件。测试和工作

注意:由于
具有维度()
是一个返回布尔值的条件方法,因此不需要任何其他条件

类似的:


谢谢@LoicTheAztec第二个代码中有一个点和比较错误。每个单元中不显示(cm)。longitud是长度,ancho是宽度“\uuuuu('longitud',$text\u domain)=>$dimensions['length'],\uuuuuuuuo('ancho',$text\u domain)=>$dimensions['width'],\uuuuo('alto',$text\u domain)=>$dimensions['height'],“@Williams错误请参见屏幕截图……每个屏幕上都显示cm。如果这个答案回答了你的问题,你可以请你回答,如果你喜欢/想要,你也可以请你回答,谢谢你。有些奇怪的事情发生了,当我使用你的完整代码时,它没有显示我(厘米)。但是如果你把你的代码和我正在修改的代码结合起来,它就会完美地工作。同样,非常感谢。@Williams在上一个带有店面主题的woocommerce版本中,它工作得很好。。。所以,也许还有别的东西在相互作用。
// 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 ) );
    }
}