Я искал вокруг и, кажется, ничего не нашел. Прямо сейчас у меня есть запрос на отображение продуктов из моего магазина. Мне также нужно иметь возможность отображать в запросе общие продажи каждого продукта и общие розничные продажи каждого продукта. Я использую это, чтобы создать таблицу лидеров.
Общий объем продаж прост, это просто настраиваемое поле, которое woocommerce добавляет для вас. У меня проблемы с поиском ответа на общий объем розничных продаж.
Мне также нужно отобразить общие розничные продажи всего магазина, но, похоже, и с этим ничего не помогает.
У меня был код на этой странице работает, но затем плагин обновился и перестал работать. Он просто показывал 0, а теперь ничего не показывает.
Вот мой запрос прямо сейчас, используя код из страницы, упомянутой выше.
<?php $my_query = new WP_Query( array( 'post_type' => 'product', 'posts_per_page' => -1 ) );?>
<?php if ( $my_query->have_posts() ) : ?>
<?php $order_items = apply_filters( 'woocommerce_reports_top_earners_order_items', $wpdb->get_results( "
SELECT order_item_meta_2.meta_value as product_id, SUM( order_item_meta.meta_value ) as line_total FROM {$wpdb->prefix}woocommerce_order_items as order_items
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id
LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta as order_item_meta_2 ON order_items.order_item_id = order_item_meta_2.order_item_id
LEFT JOIN {$wpdb->posts} AS posts ON order_items.order_id = posts.ID
LEFT JOIN {$wpdb->term_relationships} AS rel ON posts.ID = rel.object_ID
LEFT JOIN {$wpdb->term_taxonomy} AS tax USING( term_taxonomy_id )
LEFT JOIN {$wpdb->terms} AS term USING( term_id )
WHERE posts.post_type = 'shop_order'
AND posts.post_status = 'publish'
AND tax.taxonomy = 'shop_order_status'
AND term.slug IN ('" . implode( "','", apply_filters( 'woocommerce_reports_order_statuses', array( 'completed', 'processing', 'on-hold' ) ) ) . "')
AND order_items.order_item_type = 'line_item'
AND order_item_meta.meta_key = '_line_total'
AND order_item_meta_2.meta_key = '_product_id'
GROUP BY order_item_meta_2.meta_value
" )); ?>
<?php while($my_query->have_posts()): $my_query->the_post(); ?>
<div id="<?php $totalDonations = 0;
$Charities = array($post->ID);
//Gather Total for Individual Items
foreach ($order_items as $item) {
if (in_array($item->product_id, $Charities)) {
$totalDonations = $item->line_total + $totalDonations;
}
} echo $totalDonations; ?>" class="sort_by_total">
<div class="one_half">
<li><span><?php the_title(); ?></span></li>
</div>
<div class="one_quarter">
<p><?php echo get_post_meta($post->ID, 'total_sales', true); ?></p>
</div>
<div class="one_quarter last">
<p>$<?php echo $totalDonations; ?></p>
</div>
<div class="clear"></div>
<div class="divider"></div>
</div>
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>
<?php wp_reset_query();?>
Как только они отображаются, я использую общий объем розничных продаж в качестве идентификатора для каждого div и заказываю таблицу лидеров с помощью jquery на основе этого. Вот почему он дважды вызывается в коде.
Любая помощь приветствуется. Спасибо
РЕДАКТИРОВАТЬ: Я проверял сообщения об ошибках и получал: PHP Fatal error: Using $this when not in object context on line 33
Также была такая же ошибка для строки 66. Строка 33 - это строка, которая начинается с <?php $order_items = apply_filters(
, а строка 66 - это строка, которая начинается с if (in_array($item->product_id, $Charities)) {
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: теперь я не получаю сообщений об ошибках.