Holen Sie sich den Gesamtumsatz des WooCommerce-Produkts

Nov 24 2020

Ich habe einen Shortcode erstellt, der alle Produkte in einer Schleife zurückgibt. Ich suche nach einer Möglichkeit, den Gesamtumsatz für jedes Produkt zu ermitteln. Im Moment fällt es mir immer noch schwer, die Lösung zu finden.

Das ist mein Code:

    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');

Wie erhalte ich einen Gesamtumsatz für jedes Produkt und zeige es in der Schleife an?

Antworten

3 LoicTheAztec Nov 25 2020 at 16:25

Sie können die folgenden benutzerdefinierten Funktionen verwenden, die für jedes Produkt den Nettoumsatz oder / und den Bruttoumsatz erhalten:

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 ) );
}

Der Code befindet sich in der Datei functions.php des aktiven untergeordneten Themas (oder des aktiven Themas).
Getestet und funktioniert in WooCommerce 4 und höher.

Beispiel für die Verwendung in Ihrer Schleife:

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

Dann können Sie diese Float-Betragsvariable dort verwenden, wo Sie sie benötigen.