• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Как вывести в каталоге у сгруппированного товара над кнопкой все товары

a_php

Новичок
Добрый день.

Помогите, пожалуйста, разобраться. Как можно вывести в каталоге у сгруппированного товара над кнопкой "Просмотр товара" все товары, входящие в его группу (со ссылкой) с кнопкой "В корзину" для каждого (если в наличие)?

Вопрос собственно в том, в каком файле это можно сделать и, если можно, в каких свойствах искать, чтобы понять, что данный товар: в группе, в наличие, скрыт в каталоге?

Заранее спасибо за любую информацию.
 

a_php

Новичок
Сам разобрался с задачей. Может быть, кому-нибудь поможет.
В копии woocommerce в файле Имя_темы/woocommerce/loop/price.php вывел все методы объекта $product
при помощи кода
print_r(get_class_methods($product));

Нужным оказался get_children() - возвращает массив дочерних товаров (в данном случае, мне нужны были сгруппированные товары).
Еще несколько функций пригодились для вывода информации о товарах.
Потом благодаря буржуйским форумам узнал, как вывести данные товара по его id с помощью класса WC_Product_Factory().

В итоге получился такой код:

<?php

$IDs = $product->get_children();

$group_price = array();
$group_price_html = "";

if(count($IDs) > 0)
{
$_pf = new WC_Product_Factory();
foreach ($IDs as $id) {

$_product = $_pf->get_product($id);

$tmp = explode("&rarr;", $_product->get_title());

$this_title = $_product->get_title();

if(isset($tmp[1])) $this_title = $tmp[1];

$group_price[$this_title] = "<p class='cat_group_list_el'><span class='cat_group_list_el_title'>".$this_title."</span>"
.$_product->get_price_html()."<a class='cat_group_list_el_cart' href='".$_product->add_to_cart_url()."' title='Добавить в корзину'></a></p>"
."<span class='clear'></span>".PHP_EOL;
}

ksort($group_price, SORT_NUMERIC); //сортировка, как по числам

$group_price_html = implode("", $group_price);
}

?>

<? if($group_price_html == "") { ?>
<?php if ( $price_html = $product->get_price_html() ) : ?>
<span class="price"><?php echo $price_html; ?></span>
<?php endif; ?>
<?php
} else echo "</a><div class='price2'>".$group_price_html."</div><a href='#'>";
//Пришлось сделать разрыв тега <a>, иначе получались вложенные ссылки.
?>
 

dim70

Опытный
Сам разобрался с задачей. Может быть, кому-нибудь поможет.
Добрый день. Спасибо, хорошее решение. Всё работает, товар который входит в состав сгруппированного отображается, но только в виде названия с ценой, но не ссылкой. Хотя если посмотреть код ссылка есть, но почему-то не выводится (смотрите скриншот). Не подскажите, как можно сделать, что ссылка всё же выводилась.
 

Вложения

  • нет ссылки.JPG
    нет ссылки.JPG
    54.1 KB · Просмотры: 15
Сверху Снизу