在WooCommerce单个产品页面中更改产品维度顺序

时间:2017-08-21 10:55:19

标签: php wordpress woocommerce product dimensions

我正在寻找一种过滤显示顺序或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方法。

1 个答案:

答案 0 :(得分:0)

首先,由于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+上进行测试并正常运行;