Я использую это woocommerce_format_dimensions
фильтр-заменитель для замены формата отображаемых размеров из 1 х 1 х 1 дюйм в 1 л дюйма x 1 Вт дюйма x 1 H дюйма
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 ) );
foreach( $dimensions as $key => $dimention )
$label_with_dimensions[$key] = $dimention . ' ' . strtoupper( substr($key, 0, 1) ) . ' ' . get_option( 'woocommerce_dimension_unit' ) . '.';
return implode( ' x ', $label_with_dimensions);
}
var_dump
из $ размеры массив выглядит так:
array(3) { ["length"]=> string(3) "104" ["width"]=> string(3) "136" ["height"]=> string(2) "53" }
Как я мог переименовать «Длина» ключ к «диаметр» и измените порядок измерений на обратный, чтобы конечный результат был:
1 H in. X 1 W in. X 1 D in.
Я пытался переименовать ключи в $ размеры использование массива array_map
, но не смог заставить его работать.
Вам просто нужно установить array
keys
/values
как вы хотите, чтобы они были в вашей функции (переименование одного ключа и переупорядочение массива), таким образом:
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' );
// Set here your new array of dimensions based on existing keys/values
$new_dimentions = array(
'height' => $dimensions['height'],
'width' => $dimensions['width'],
'diameter' => $dimensions['length']
);
$dimensions = array_filter( array_map( 'wc_format_localized_decimal', $new_dimentions ) );
foreach( $dimensions as $key => $dimention ){
$label_with_dimensions[$key] = $dimention . ' ' . strtoupper( substr($key, 0, 1) ) . ' ' . get_option( 'woocommerce_dimension_unit' ) . '.';
}
return implode( ' x ', $label_with_dimensions);
}
Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.
Этот код протестирован на версиях WooCommerce 3+ и работает
Других решений пока нет …