在 WooCommerce 格式的产品尺寸输出中包含尺寸字母 L/W/H

Include dimension letters L/W/H to WooCommerce formatted product dimensions output

我正在尝试修改尺寸输出,在调用 get_dimensions() 的任何地方都将包含尺寸字母而不是默认值。

所以应该是 1 L x 1 W x 1 H 而不是 1 x 1 x 1

我可以覆盖 get_dimensions() 函数并在数组中的每个值旁边包含字母,或者我可以以某种方式使用 wc_format_dimensions() 做这个?

更新: 你不能覆盖 get_dimensions() WC_Product 方法。

但是你可以使用 woocommerce_format_dimensions filter hook located in wc_format_dimensions() function, to add custom labels to each dimension product attribute, this way (随心所欲):

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 ) );
    $label_with_dimensions = []; // Initialising

    // Loop Though dimensions array
    foreach( $dimensions as $key => $dimention )
        $label_with_dimensions[$key] = strtoupper( substr($key, 0, 1) ) . ' ' . $dimention;

    return implode( ' x ',  $label_with_dimensions) . ' ' . get_option( 'woocommerce_dimension_unit' );
}

代码进入您的活动子主题(或主题)的 functions.php 文件或任何插件文件。

此代码已在 WooCommerce 版本 3+ 上测试并有效

$dimensions = $product->get_dimensions();

if ( !empty( $dimensions) ) {

echo 'Height: ' . $product->get_height() . get_option( 'woocommerce_dimension_unit' );

echo 'Width: ' . $product->get_width() . get_option( 'woocommerce_dimension_unit' );

echo 'Length: ' . $product->get_length() . get_option( 'woocommerce_dimension_unit' );

}

我已将 Ed 代码添加到您的活动子主题的 functions.php 文件中,现在它工作正常:

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 ) );
    $label_with_dimensions = []; // Initialising

    // Loop Though dimensions array
    foreach( $dimensions as $key => $dimention )
        $label_with_dimensions[$key] = strtoupper( substr($key, 0, 1) ) . ' ' . $dimention;

    return implode( ' x ',  $label_with_dimensions) . ' ' . get_option( 'woocommerce_dimension_unit' );
}