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

时间:2017-07-30 11:08:16

标签: php wordpress woocommerce product dimensions

我试图修改维度输出,在调用 get_dimensions() 的地方而不是默认值时,它会包含维度字母。

因此它将是1 L x 1 W x 1 H而不是1 x 1 x 1

我可以覆盖 get_dimensions() 功能并在数组中包含每个值旁边的字母,或者我可以某种方式使用 wc_format_dimensions() 来执行此操作吗?

3 个答案:

答案 0 :(得分:2)

已更新:您无法覆盖get_dimensions() WC_Product 方法。

但您可以使用位于wc_format_dimensions()函数中的 woocommerce_format_dimensions 过滤器钩子,为每个维度产品属性添加自定义标签,这样(就像您想要的那样) )

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

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

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

答案 1 :(得分:0)

$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' );

}

答案 2 :(得分:0)

我在您的活动子主题的functions.php文件中添加了addEd代码,现在可以正常使用了:

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