Woocommerce включает пользовательское измерение в класс $ product - PullRequest
0 голосов
/ 03 марта 2019

Ситуация: Объект продукта Woocommerce обычно содержит массив dimensions с необработанными значениями xyz.

$product = [
  'dimensions' => [
    'length' => 1,
    'width' => 1,
    'height' => 1
  ],
  'dimensions_html' => '1 x 1 x 1 cm',
  ...

Использование " Дополнительные пользовательские измерения для продуктов вWoocommerce" код ответа, я создал 3 новых пользовательских размера (глубина, диаметр, высота сиденья)…

Проблема: Я хочу добавить эти свойства в продукткласс, чтобы они были доступны везде, как:

$product = [
  'dimensions' => [
    'length' => 1,
    'width' => 1,
    'height' => 1,
    'depth' => 1,
    'diameter' => 1,
    'seat-height' => 1
  ],
  'dimensions_html' => '1 x 1 x 1 x 1 x 1 x 1 cm',
  ...

Как это можно сделать?

1 Ответ

0 голосов
/ 03 марта 2019

Я работал и манипулировал dimensions_html вместо того, чтобы включить все необходимые измерения.Это не элегантное или универсальное решение, но оно работает для меня прямо сейчас.

// functions.php
add_filter( 'woocommerce_format_dimensions', 'change_formated_product_dimentions', 10, 2 );
function change_formated_product_dimentions( $dimension_string, $dimensions ){
    global $product;
    $cm = get_option( 'woocommerce_dimension_unit' );

    $html = '';

    if( $dimensions['length'] ){
        $html .= '<span><strong>Length</strong> '.$dimensions['length'].' '.$cm.'</span>';
    }

    if( $dimensions['width'] ){
        $html .= '<span><strong>Width</strong> '.$dimensions['width'].' '.$cm.'</span>';
    }

    if( $dimensions['height'] ){
        $html .= '<span><strong>Height</strong> '.$dimensions['height'].' '.$cm.'</span>';
    }

    $depth = $product->get_meta( '_depth' );
    if( $depth ){
        $html .= '<span><strong>Depth</strong> '.$depth.' '.$cm.'</span>';
    }

    $diameter = $product->get_meta( '_diameter' );
    if( $diameter ){
        $html .= '<span><strong>Diameter</strong> '.$diameter.' '.$cm.'</span>';
    }

    $seat_height = $product->get_meta( '_seat_height' );
    if( $seat ){
        $html .= '<span><strong>Seat height</strong> '.$seat_height.' '.$cm.'</span>';
    }

    return $html;
}

Теперь оно включено в $product['dimensions_html'] и, когда эхо-сигнал приводит к

Length 1 см Ширина 1 см Высота 1 см Глубина 1 см Диаметр 1 см Высота сиденья 1 см

и который (почти) именно то, что я хотел.

...