• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Комплектующие к товару

Image CMS
#1
Всем привет! Мне кажется вопрос уже должны были этот обсуждать но ничего не удалось нагугулить, поэтому решил спросить тут.
В woocommerece вроде как нету такой функции как типа "с этим товаром обычно покупают еще...", есть сгруппированный товар но я так понял это не то, это типа один комплект за определенную цену за все...
Пример того что я ищу:
К примеру товар это принтер, и на странице товара вывести то что обычно с ним покупают в комплекте типа бумага, доп. картридж, кабель какой-то ну и всякие аксессуары.

Может есть готовые решения этого? или это все может даже в вукомерц есть, кто подскажет?
 

DiZeR

Опытный
#2
В woocommerece вроде как есть такая функция как типа "с этим товаром обычно покупают еще",
и находиться она во вкладке «Сопутствующие» ввести id товара...
 
#3
В woocommerece вроде как есть такая функция как типа "с этим товаром обычно покупают еще",
и находиться она во вкладке «Сопутствующие» ввести id товара...
Да есть "Кросселы" но это я так понял выводит только в корзине а не на странице товара, нужно будет найти какая функция за это отвечает и вывести тогда на странице товара еще,
спасибо за наводку.
 

DiZeR

Опытный
#4
Да есть "Кросселы" но это я так понял выводит только в корзине а не на странице товара, нужно будет найти какая функция за это отвечает и вывести тогда на странице товара еще,
спасибо за наводку.
не знаю, что у вас за шаблон - в стандартных «Сопутствующие» выводят прямо под товаром - на карточке товара, так же обычно есть блок похожие товары (по категории или меткам).
 

searchingman

Гуру
Местный
#6
На вкладке сопутствующие :
- апселлы используются в карточке товара
- кросселы используются в корзине
 
#7
На вкладке сопутствующие :
- апселлы используются в карточке товара
- кросселы используются в корзине
Да это я понял) Но только апселлы это те которые рекомендуемые в замен данному, а кросселы это типа комплекта, в общем я сделал вывод кросселы тоже на странице товара и вроде бы получилось то что я хотел )
 

searchingman

Гуру
Местный
#8
Да это я понял) Но только апселлы это те которые рекомендуемые в замен данному, а кросселы это типа комплекта, в общем я сделал вывод кросселы тоже на странице товара и вроде бы получилось то что я хотел )
Ну и поделились бы тогда кодом вывода для других. ;)
Может кому-нибудь пригодиться.
 
#9
Ну и поделились бы тогда кодом вывода для других. ;)
Может кому-нибудь пригодиться.
Да не вопрос)) я особо не заморачивался взял стандартный cross-sells.php который выводится в корзине и располагается по пути /cart/cross-sells.php , скопировал в single-product/cross-sells.php (что бы все было красиво и там чуть код отличается) потом поцепил хук

PHP:
if ( ! function_exists( woo_cross_sell_display_single_product' ) {

    /**
    * Output the cart cross-sells.
    *
    * @param  integer $posts_per_page
    * @param  integer $columns
    * @param  string $orderby
    */
    function woo_cross_sell_display_single_product( $posts_per_page = 2, $columns = 2, $orderby = 'rand' ) {
        wc_get_template( 'single-product/cross-sells.php', array(
                'posts_per_page' => $posts_per_page,
                'orderby'        => $orderby,
                'columns'        => $columns
            ) );
    }
}

add_action( 'woocommerce_after_single_product_summary', 'woo_cross_sell_display_single_product', 19 ); //19 потому что мне нужно что бы выводилось перед похожими товарами т.е. Апселлы.
и все.
 
Последнее редактирование:

Kenshi

Новичок
#10
Да не вопрос)) я особо не заморачивался взял стандартный cross-sells.php который выводится в корзине и располагается по пути /cart/cross-sells.php , скопировал в single-product/cross-sells.php (что бы все было красиво и там чуть код отличается) потом поцепил хук

PHP:
if ( ! function_exists( woo_cross_sell_display_single_product' ) ) {

    /**
    * Output the cart cross-sells.
    *
    * @param  integer $posts_per_page
    * @param  integer $columns
    * @param  string $orderby
    */
    function media_center_cross_sell_display_single_product( $posts_per_page = 2, $columns = 2, $orderby = 'rand' ) {
        wc_get_template( 'single-product/cross-sells.php', array(
                'posts_per_page' => $posts_per_page,
                'orderby'        => $orderby,
                'columns'        => $columns
            ) );
    }
}

add_action( 'woocommerce_after_single_product_summary', 'woo_cross_sell_display_single_product', 19 ); //19 потому что мне нужно что бы выводилось перед похожими товарами т.е. Апселлы.
и все.
Этот код (хук) прописывается в "functions.php"?
Мои действия:
1. Нашел файл "cross-sells.php" - скопировал содержимое
2. Создал новый файл в папке "single-product" с названием "cross-sells.php", в который вставил содержимое
3. В файле "functions.php" прописал хук (оставил его вообще без изменений)
4. На выходе белый экран. Скорее всего, ошибки какие то

В программировании не силен, могу только "копи-пастить".
Что неправильно я сделал, можете сказать?
 

searchingman

Гуру
Местный
#12
В программировании не силен, могу только "копи-пастить".
Если это так, то зачем стали придумывать свое решение?
Мои действия:
1. Нашел файл "cross-sells.php" - скопировал содержимое
2. Создал новый файл в папке "single-product" с названием "cross-sells.php", в который вставил содержимое
3. В файле "functions.php" прописал хук (оставил его вообще без изменений)
4. На выходе белый экран. Скорее всего, ошибки какие то
Скопируйте вышеприведенный код в functions.php свой темы.
 

Kenshi

Новичок
#14
Если это так, то зачем стали придумывать свое решение?


Скопируйте вышеприведенный код в functions.php свой темы.
Правлю всегда готовыми решениями и, как правило, всегда всё работает. Стандартного функционала либо не хватает, либо нужен другой.
 

Kenshi

Новичок
#16
в общем понятно, я допустил ошибку в хуке, обновил, скопируйте заново хук и попробуйте
Вставил, проблема не исчезла - белый экран.
Я в общем то нашел выход из ситуации стандартным решением Woocommerce, поэтому не буду вас напрягать дальнейшими вопросами. Мне (вроде) на данный момент этого решения достаточно. А дальше видно будет :)

Спасибо, за ответы.
 

Kenshi

Новичок
#19
У Вас ошибка
PHP:
if ( ! function_exists( woo_cross_sell_display_single_product' ) ) {
Спасибо, кавычку убрал, всё вывелось ))))

PS: не подскажите, что значит в комменте в коде, который вставили в functions.php, обозначает цифра 19? Откуда она взялась? В общем я бы хотел вставить этот код, допустим сюда: http://c2n.me/3mSE7qe
До отзывов и описания. Возможно?

PPS: методом тыка вывел туда, куда нужно )) Еще раз, спасибо!
 
Последнее редактирование:

searchingman

Гуру
Местный
#20
PS: не подскажите, что значит в комменте в коде, который вставили в functions.php, обозначает цифра 19? Откуда она взялась?
Если на хук повешено несколько функций, то для порядка их вызова используется приоритет. Подробнее в описании функции add_filter.