it-swarm.com.de

Wie kann ich die meistverkauften Produkte im Woocommerce auflisten?

Ich möchte das meistverkaufte Produkt in dieser Schleife betrachten:

<?php
    $args4 = array( 'post_type' => 'product', 'posts_per_page' => 1, 'product_cat' => 'cat', 'order' => 'DEC' );
    $loop4 = new WP_Query( $args4 );
    while ( $loop4->have_posts() ) : $loop4->the_post();?>
    <div class="view-back">
        <span><?php echo $product->get_categories( ) ?></span>
        <span><?php echo $product->get_price_html(); ?></span>
        <a class="pb" href="<?php echo get_permalink( $loop4->post->ID ) ?>">more<i class="fa fa-arrow-circle-o-right fa-2x" aria-hidden="true"></i></a>
        <span class="pt"><?php the_title(); ?></span>
    </div>
    <?php $image4 = wp_get_attachment_image_src( get_post_thumbnail_id($loop4->post->ID), 'single-post-thumbnail' );?>
    <img src="<?php  echo $image4[0]; ?>" data-id="<?php echo $loop4->post->ID; ?>">
    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
5
Mr Yar

Lösung 1: Add this plugin WP woocommerce meistverkauften Produkte nach Kategorie

Lösung 2: Um die besten Produkte in WooCommerce abzurufen, verwenden wir die Manipulation von wp_query mit meta_key als "total_sales" und orderby "meta_value_num". Kurz gesagt, wir zeigen Produkte nach der Gesamtverkaufsnummer an. Hier ist der Code dafür 

<?php
$args = array(
    'post_type' => 'product',
    'meta_key' => 'total_sales',
    'orderby' => 'meta_value_num',
    'posts_per_page' => 1,
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); 
global $product; ?>
<div>
<a href="<?php the_permalink(); ?>" id="id-<?php the_id(); ?>" title="<?php the_title(); ?>">

<?php if (has_post_thumbnail( $loop->post->ID )) 
        echo get_the_post_thumbnail($loop->post->ID, 'shop_catalog'); 
        else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="product placeholder Image" width="65px" height="115px" />'; ?>

<h3><?php the_title(); ?></h3>
</a>
</div>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
13
user5894611

Es fiel mir schwer, eine Liste der meistverkauften Produkte über die Standardschleife zu erhalten. Aber keine der Lösungen von hier und andere stackoverflow-Posts mit dem gleichen Problem funktionieren für mich nicht. Schließlich bekomme ich ein Ergebnis, das mein Problem durch die benutzerdefinierte Abfrage an die Datenbank löst.

global $wpdb;


$order_totals = $wpdb->get_results( "SELECT kp_posts.ID FROM kp_posts  INNER JOIN kp_postmeta ON ( kp_posts.ID = kp_postmeta.post_id ) WHERE 1=1 AND ( kp_postmeta.meta_key = 'total_sales' ) AND kp_posts.post_type = 'product' AND (kp_posts.post_status = 'publish') GROUP BY kp_posts.ID ORDER BY kp_postmeta.meta_value+0 DESC, kp_posts.post_date DESC LIMIT 0, 16" );


foreach ( $order_totals as $value ) {
    $product = wc_get_product( $value->ID );

    echo $product->get_title();
}
0
Oleg Apanovich