Добрый день, как похожее реализовать на 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>';
}
?>
Не уверен, что сделал правильно, но работает. Не будет ли такой запрос сильно нагружать когда будет 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>
И да тот запрос, что выше не проверяет статус пришлось еще дописать.
<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>
пробуйте такой запрос сделать
$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 должно быть кол-во платных товаров в оплаченных заказах
Если нужно получить кол-во продаж определенного товара, то указываем его 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 товар - 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 - содержит идентификатор товара
Хотя я думаю этот плагин поможет избавиться от корзины и сразу взять лишь один товар
Вот еще один отличное решение, оно же даст возможность выводить какое количество товаров осталось, думаю тогда и не надо проверять сколько было купленно..