Я ищу способ фильтрации порядка отображения или размеров продукта woocommerce (длина, ширина, высота). Я хотел бы отобразить высоту перед шириной.
В настоящее время я использую пользовательскую функцию для фильтрации, где отображаются размеры:
function wsa_show_product_dimensions() {
global $product;
echo $product->list_attributes();
}
add_action( 'woocommerce_single_product_summary', 'wsa_show_product_dimensions', 25 );
Я изменил шаблон product-attribute.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+ и работает;
Других решений пока нет …