更改 WooCommerce 单个产品页面中的产品尺寸顺序

Change the Product dimensions order in WooCommerce single product pages

我正在寻找一种方法来过滤显示顺序或 woocommerce 产品尺寸(长、宽、高)。我想在宽度之前显示高度。

目前我使用自定义函数来过滤显示维度的位置:

function wsa_show_product_dimensions() {
    global $product;
    echo $product->list_attributes();
}

add_action( 'woocommerce_single_product_summary', 'wsa_show_product_dimensions', 25 );

我修改了 product-attributes.php 模板以格式化返回的 html:

<?php if ( $display_dimensions && $product->has_dimensions() ) : ?>
    <div class="c-details-row">
        <div class="c-details-col c-details-col_1">
          <span class="c-label-middle"><?php _e( 'Size', 'woocommerce' ) ?></span>
        </div>
        <div class="c-details-col c-details-col_2">
          <span class="c-label-middle"><?php echo esc_html( wc_format_dimensions( $product->get_dimensions( false ) ) ); ?></span>
        </div>
    </div>
<?php endif; ?>

我看到我需要过滤 get_dimensions(); 函数但不知道如何重新排序数组?

我看到 list_attributes(); 已被弃用,因此任何有关如何执行此操作的帮助 - 如果可能,使用新的 wc_display_product_attributes 方法会很棒。

首先,由于 WooCommerce 3 WC_Product list_attributes() 方法已弃用,它被 wc_display_product_attributes( $product ).

要更改产品尺寸顺序,您需要先创建自己的函数:

function get_product_dimensions_custom(){
    global $product;

    return  wc_format_dimensions( array(
        'length' => $product->get_length(),
        'height' => $product->get_height(),
        'width'  => $product->get_width(),
    ));
}

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

那么您就可以在模板自定义中使用它了:

<?php if ( $display_dimensions && $product->has_dimensions() ) : ?>
    <div class="c-details-row">
        <div class="c-details-col c-details-col_1">
          <span class="c-label-middle"><?php _e( 'Size', 'woocommerce' ) ?></span>
        </div>
        <div class="c-details-col c-details-col_2">
          <span class="c-label-middle"><?php echo esc_html( get_product_dimensions_custom() ); ?></span>
        </div>
    </div>
<?php endif; ?>

要在 woocommerce_single_product_summary 中完成您的自定义挂钩函数将是:

add_action( 'woocommerce_single_product_summary', 'wsa_show_product_dimensions', 25 );
function wsa_show_product_dimensions() {
    global $product;

    echo wc_display_product_attributes( $product );

}

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

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