更改WooCommerce单一产品的页面尺寸顺序
问题描述:
我在寻找一种方法来过滤显示顺序或woocommerce产品的尺寸(长度,宽度,高度)。我想在宽度之前显示高度。更改WooCommerce单一产品的页面尺寸顺序
目前我使用自定义funtion过滤其中显示尺寸:
<?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; ?>
:
function wsa_show_product_dimensions() {
global $product;
echo $product->list_attributes();
}
add_action('woocommerce_single_product_summary', 'wsa_show_product_dimensions', 25);
以格式化所返回的HTML我已经修改了产品attributes.php模板
我可以看到,我需要过滤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测试+和作品;
这真棒@LoicTheAztec - 非常感谢你。有一个小的错字模板custoomisation片段('尺寸'应该是'尺寸') - 除此之外,这是绝对完美的。非常感谢 – Marco