2016-09-20 2 views
4

В WooCommerce, например, у меня есть продукт с определенной шириной = '1.75' и height = '15 .75 '.Проблема с WooCommerce - возврат только целочисленной части размеров для продуктов

Я использую следующую функцию:

$product = new WC_Product($id); 

public function get_sizes($product) { 
    $w_size = floatval($product->get_width()); 
    $h_size = floatval($product->get_height()); 

    $w_M = intval($w_size); 
    $h_M = intval($h_size); 
    $w_CM = $w_size - intval($w_size); 
    $h_CM = $h_size - intval($h_size); 

    return array($w_M, $h_M, $w_CM, $h_CM); 
} 

Но $product->get_width() и $product->get_height() возвращающегося только '1' и '15'.

Почему woocomrce возвращает только целую часть размеров?

Спасибо.

ответ

2

У меня есть тестовая установка продукта с вашими размерами в woocommerce (в моем случае этот продукт имеет ID 99). вот снимок экрана настройки:

enter image description here

Тогда я повторяю каждое значение таким образом (используя в моем случае PRODUCTID 99):

$product = new WC_Product(99); 

// You don't need floatval() function here. 
$w_size = $product->get_width(); echo '$w_size is ' . $w_size; echo "<br>"; 
$h_size = $product->get_height(); echo '$h_size is ' . $h_size; echo "<br>"; 
$w_M = intval($w_size); echo '$w_M is ' . $w_M; echo "<br>"; 
$h_M = intval($h_size); echo '$h_M is ' . $h_M; echo "<br>"; 

// Here I have made some little changes (in both lines below) is the same as you 
$w_CM = $w_size - $w_M; echo '$w_CM is ' . $w_CM; echo "<br>"; 
$h_CM = $h_size - $h_M; echo '$h_CM is ' . $h_CM; echo "<br>"; 

$arr = array($w_M, $h_M, $w_CM, $h_CM); print_r($arr); 

И я получаю этот выход:

$w_size is 15.75 
$h_size is 1.75 
$w_M is 15 
$h_M is 1 
$w_CM is 0.75 
$h_CM is 0.75 
Array ([0] => 15 [1] => 1 [2] => 0.75 [3] => 0.75) 

Я не понимаю, какова ваша проблема, так как я получаю правильные значения, используя $product->get_width() и $product->get_height() методы.

+0

Я думаю, что это проблема с сайтом, потому что если я напишу echo $ product-> get_width(), я получаю только 15, но если я напишу echo floatval («15.75»), то я получу только 15. lol –

+0

С эхом 15.75 и эхом "15.75" то же самое, это не смешно ... –