Вывести значение атрибута товара из массива на странице товара - PullRequest
1 голос
/ 24 июня 2019

Я использую следующий код для получения и отображения значения атрибута моего товара на странице товара:

$discounts = get_post_meta( $product->id, '_my_discounts' );

_my_discount - это массив, содержащий различные скидки.Каждая скидка содержит различную информацию (min_qty, discount, type, is_flat и т. Д.).Когда я использую echo var_dump($discounts);, я получаю следующий вывод (у меня есть две скидки):

array(1) { [0]=> array(2) {
["58038e0802c2252b7f50a70d25a33ede"]=> array(7) { ["min_qty"]=> int(4) ["discount"]=> string(3) "100" ["type"]=> int(2) ["role"]=> string(3) "any" ["position"]=> string(1) "0" ["is_flat"]=> int(1) ["is_variations_sep"]=> int(0)
["007632f30006ccaac16982b779ec57ae"]=> array(7) { ["min_qty"]=> int(8) ["discount"]=> string(3) "293" ["type"]=> int(2) ["role"]=> string(3) "any" ["position"]=> string(1) "0" ["is_flat"]=> int(1) ["is_variations_sep"]=> int(0)

Мой вопрос: как мне извлечь максимальную скидку из массива в ["discount"] и отобразить ее настраница продукта?Например, вышеуказанный продукт имеет две скидки: 100 долларов и 293 доллара.Я хочу получить наибольшее из двух значений и отобразить его на странице своего продукта.

Я попробовал следующее, но это не сработало:

foreach ( $discounts as $highest_discount ) : 
$discount_value = wc_get_product_terms( $product->id, $highest_discount['discount'], array( 'fields' => 'names' ) );
echo $discount_value;
endforeach;

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 24 июня 2019

Вам просто нужно написать небольшую функцию, которая находит, какой элемент массива имеет наибольшую скидку.

function find_highest_discount($discounts){
  $max_discount=0;
  foreach($discounts as $ds0){
      if ($ds0['discount']>$max_discount) $max_discount=$ds0['discount'];
  }
  return $max_discount;
}

Использование

$discounts = get_post_meta( $product->id, '_my_discounts' );
$highest_discount=find_highest_discount($discounts[0]);

Обновление: аналогичная функция может быть создана для получения наименьшегономер.

function find_lowest_discount($discounts){
  $min_discount=array_values($discounts)[0]['discount'];
  foreach($discounts as $ds0){
      if ($ds0['discount']<$min_discount) $min_discount=$ds0['discount'];
  }
  return $min_discount;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...