Uzyskaj całkowitą kwotę sprzedaży produktu WooCommerce

Nov 24 2020

Stworzyłem krótki kod, który zwraca wszystkie produkty w pętli. Szukam sposobu na uzyskanie całkowitej sprzedaży dla każdego produktu. W tej chwili wciąż mam trudności ze znalezieniem rozwiązania.

To jest mój kod:

    function loop_ffh_function() 
    {
        ?>

        <div class="row">
    <?php
    $args = array( 'numberposts' => -1, 'post_type' => 'product', 'orderby' => 'date'); $loop = new WP_Query($args); while ($loop->have_posts()) : $loop->the_post(); global $product; ?>         
        
        <?php
        $productID = get_the_ID(); ?> <div class="column"> <a href="<?php echo get_permalink($loop->post->ID) ?>">
                <?php the_post_thumbnail('full'); ?>
            </a>
            <?php 
            $target = get_field( 'campaign_target_amount' ); ?> <div class="progress" style="margin-top:20px;"> <div class="progress-bar progress-bar-warning progress-bar-striped active" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width:40%"> 40% </div> </div> <div class="row"> <div class="col-md-8" style="padding-top:7px;"> Target : <b style="font-size: 18px;">RM <?php echo $target;?></b>
                </div>
                <div class="col-md-4">
                    <a class="btn" href="<?php echo get_permalink($loop->post->ID) ?>">Donate Now</a>
                </div>
            </div>
        </div>  
    <?php endwhile; ?>
    <?php wp_reset_query(); ?>
      </div>

       <?php
    }
    add_shortcode('loop_ffh', 'loop_ffh_function');

Jak uzyskać sumę sprzedaży dla każdego produktu i wyświetlić ją w pętli?

Odpowiedzi

3 LoicTheAztec Nov 25 2020 at 16:25

Możesz użyć następujących funkcji niestandardowych, które uzyskają dla każdego produktu, przychodu netto lub / lub przychodu brutto:

function get_product_net_revenue( $product_id ) { global $wpdb;

    return (float) $wpdb->get_var( $wpdb->prepare("
        SELECT SUM(product_net_revenue)
        FROM {$wpdb->prefix}wc_order_product_lookup WHERE product_id = %d ",$product_id ) );
}

function get_product_gross_revenue( $product_id ) { global $wpdb;

    return (float) $wpdb->get_var( $wpdb->prepare("
        SELECT SUM(product_gross_revenue)
        FROM {$wpdb->prefix}wc_order_product_lookup WHERE product_id = %d ",$product_id ) );
}

Kod trafia do pliku functions.php aktywnego motywu potomnego (lub aktywnego motywu).
Przetestowany i działa w WooCommerce 4 i nowszych.

Przykładowe użycie wewnątrz pętli:

<?php $amount = get_product_net_revenue( $loop->post->ID ); ?>

Następnie możesz użyć tej zmiennej ilościowej tam, gdzie potrzebujesz.