Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация Вывести Количество Проданных Единиц Товара уже с оплатой.
14ответ(ов) в теме
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
1
14:24

Добрый день, как похожее реализовать на Rcl Commerce?

Пытался вывести <?php echo get_post_meta(get_the_ID(), 'total_sales', TRUE); ?> но как понимаю нет такого тега 'total_sales' в самой Rcl.

<?php add_action( 'woocommerce_single_product_summary', 'wc_product_sold_count', 11 ); function wc_product_sold_count() { global $product; $units_sold = get_post_meta( $product->id, 'total_sales', true ); echo '<p>' . sprintf( __( 'Единиц продано: %s', 'woocommerce' ), $units_sold ) . '</p>'; } ?>

0
Вова (Otshelnik-Fm)
не в сети 2 недели
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
2
14:43

Здравствуйте.

Перенесено в кастомизации.

Вам нужно вывести общее кол-во продаж определенного товара?

0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
3
15:06

Да, каждого товара, сколько человек его купило. От этого условия я буду проверять убирать товар с главной или нет. Я так понимаю нужно будет в базу запрос делать и проверять таблицу 'wp_rcl_order_items' на то сколько раз этот товар тут фигурировал?

0
Вова (Otshelnik-Fm)
не в сети 2 недели
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
4
15:18

Можно попробовать функцию rcl_count_orders
Смотреть какие аргументы принимает тут /add-on/commerce/classes/class-rcl-orders-query.php

Редакции сообщения
09.09.2020 15:19Владимир (Otshelnik-Fm)Причина: не указано
0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
5
15:58

Не уверен, что сделал правильно, но работает. Не будет ли такой запрос сильно нагружать когда будет 20+ товаров

<p>Участников:
                    <?php $args = array(); $products = RQ::tbl( new Rcl_Order_Items_Query() )->parse( $args )->get_results();
                    $array = json_decode(json_encode($products), true);
                    for ($i=0; $i < count($array); $i++) {
                        if($array[$i][\'product_id\'] == $post->ID) $a++;
                    }
                    echo $a;?></p>

Редакции сообщения
09.09.2020 15:59icedesignПричина: не указано
09.09.2020 20:30Андрей CSПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 2 недели
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
6
16:11

Есть плагин query monitor и доп

Вы не можете просматривать опубликованные ссылки

- смотрите удобно там по запросам что выходит и с каким кодом легче

0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
7
16:19

И да тот запрос, что выше не проверяет статус пришлось еще дописать.

<p>Участников: <?php $args = array();
                    $products = RQ::tbl( new Rcl_Order_Items_Query() )->parse( $args )->get_results();
                    $orders = RQ::tbl( new Rcl_Orders_Query() )->parse( $args )->get_results();
                    $array = json_decode(json_encode($products), true);
                    $arrays = json_decode(json_encode($orders), true);
                    for ($i=0; $i < count($array); $i++) {
                        if($array[$i]['product_id'] == $post->ID && $arrays[$i]['order_id'] == $array[$i]['order_id'] && $arrays[$i]['order_status'] == 2) $a++;
                    }
                    echo $a;?></p>

0
Андрей CS
не в сети 8 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16925
8
20:38

пробуйте такой запрос сделать

$cnt = RQ::tbl( new Rcl_Order_Items_Query() )
	->join(
		'order_id', RQ::tbl( new Rcl_Orders_Query())->where(['order_status' => 2]) 
	)
	->where( ['product_price__not_in' => array(0)] )
	->get_count();

в $cnt должно быть кол-во платных товаров в оплаченных заказах

0
Андрей CS
не в сети 8 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16925
9
20:48

Если нужно получить кол-во продаж определенного товара, то указываем его ID в запросе

$cnt = RQ::tbl( new Rcl_Order_Items_Query() )
	->join(
		'order_id', RQ::tbl( new Rcl_Orders_Query())->where(['order_status' => 2]) 
	)
	->where( [
		'product_price__not_in' => array(0),
		'product_id' => $product_id
	] )
	->get_count();

$product_id - содержит идентификатор товара

1
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
10
22:08

Да это реально сокращает все циклы и переводы в массивы) Еще тут понял что мне нужно сделать возможность разрешить купить лишь 1 товар - 1 пользователю. Лишнее я удалил с корзины и в товаре, я проверял через этот цикл и просто через js удалял кнопку.

if($array[$i]['product_id'] == $post->ID && $arrays[$i]['user_id'] == $user_ID){
                            $as = 1;
                        }

Но как теперь тут это сделать правильнее и думаю до еще появления кнопки, она должна будет замениться на другую с ссылкой..

Андрей CS сказал(а)
Если нужно получить кол-во продаж определенного товара, то указываем его ID в запросе

$cnt = RQ::tbl( new Rcl_Order_Items_Query() )
	->join(
		'order_id', RQ::tbl( new Rcl_Orders_Query())->where(['order_status' => 2]) 
	)
	->where( [
		'product_price__not_in' => array(0),
		'product_id' => $product_id
	] )
	->get_count();

$product_id - содержит идентификатор товара

0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
11
22:18

Хотя я думаю этот плагин поможет избавиться от корзины и сразу взять лишь один товар

Вы не можете просматривать опубликованные ссылки

Вот еще один отличное решение, оно же даст возможность выводить какое количество товаров осталось, думаю тогда и не надо проверять сколько было купленно..

Вы не можете просматривать опубликованные ссылки
0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
12
22:48

Еще нашел баг, если удалить товар из корзины то админу даже не узнать что он удалил его, так как в истории заказов его вообще нет. Может это так задуманно, но странно.

0
Вова (Otshelnik-Fm)
не в сети 2 недели
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
13
22:57

Если у вас есть другие вопросы/предложения/репорты - не флудим в этой теме, а создаем новую. Один вопрос или проблема - одна тема на форуме.

Вопрос обозначенный в первом сообщении решен?

Редакции сообщения
09.09.2020 22:58Владимир (Otshelnik-Fm)Причина: не указано
0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
14
11:42

Да решен, но как я понимаю мне к нему нужно же дописать проверку, что пользователь уже положил этот товар в корзину чтоб нельзя было купить 2 одинаковых..

0
Тема закрыта. Публикация новых сообщений запрещена.