在WooCommerce格式化的产品尺寸输出中将长度重命名为直径

时间:2017-07-30 16:06:50

标签: php wordpress woocommerce product dimensions

我正在使用此 woocommerce_format_dimensions 过滤器钩子将显示的尺寸格式从 1 x 1 x 1 in 替换为 1 L in。x 1 W in。x 1 H in。

add_filter( 'woocommerce_format_dimensions', 'custom_formated_product_dimentions', 10, 2 );
function custom_formated_product_dimentions( $dimension_string, $dimensions ){
    if ( empty( $dimension_string ) )
        return __( 'N/A', 'woocommerce' );

    $dimensions = array_filter( array_map( 'wc_format_localized_decimal', $dimensions ) );
    foreach( $dimensions as $key => $dimention )
        $label_with_dimensions[$key] = $dimention . ' ' . strtoupper( substr($key, 0, 1) ) . ' ' . get_option( 'woocommerce_dimension_unit' ) . '.';

    return implode( ' x ',  $label_with_dimensions);
}
$ dimensions 数组的

var_dump 如下所示:

array(3) { ["length"]=> string(3) "104" ["width"]=> string(3) "136" ["height"]=> string(2) "53" }

如何将“length”键重命名为“diameter”,并将尺寸顺序更改为反向,以便最终结果为:

1 H in。x 1 W in。x 1 D in。

我尝试使用 array_map 重命名 $ dimensions 数组中的键,但无法让它运行起来。

1 个答案:

答案 0 :(得分:1)

您只需根据需要设置 array keys / values 在你的函数中(重命名一个键并重新排序你的数组),这样:

add_filter( 'woocommerce_format_dimensions', 'custom_formated_product_dimentions', 10, 2 );
function custom_formated_product_dimentions( $dimension_string, $dimensions ){
    if ( empty( $dimension_string ) )
        return __( 'N/A', 'woocommerce' );

    // Set here your new array of dimensions based on existing keys/values
    $new_dimentions = array( 
        'height' => $dimensions['height'],
        'width'  => $dimensions['width'],
        'diameter' => $dimensions['length']
    );

    $dimensions = array_filter( array_map( 'wc_format_localized_decimal', $new_dimentions ) );
    foreach( $dimensions as $key => $dimention ){
        $label_with_dimensions[$key] = $dimention . ' ' . strtoupper( substr($key, 0, 1) ) . ' ' . get_option( 'woocommerce_dimension_unit' ) . '.';
    }

    return implode( ' x ',  $label_with_dimensions);
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

此代码在WooCommerce版本3+上测试并正常工作