Wie listet man alle Produkte mit Gesamtumsatz auf?

Lesezeit: 3 Minuten

Wie listet man alle Produkte mit Gesamtumsatz auf
Yiedpozi

Wie listet man alle Produkte von WooCommerce mit Gesamtumsatz auf? Dieser Code gilt nur für 1 Produkt. Es funktioniert nicht, wenn ein Array auf $product gesetzt wird.

<?php
$product = "13";
$units_sold = get_post_meta( $product, 'total_sales', true );
echo '<p>' . sprintf( __( 'Units Sold: %s', 'woocommerce' ), $units_sold ) . '</p>';
?>

Ich möchte auf Ausgabe, Format wird wie folgt sein:

[PRODUCT_NAME] - [TOTAL_SALES]

Dafür können Sie Standard verwenden get_posts() Funktion mit benutzerdefinierten Feldparametern. Das folgende Beispiel nimmt alle Posts mit Verkäufen größer als Null in absteigender Reihenfolge auf, wenn Sie alle Produkte erhalten möchten, entfernen Sie den Meta-Abfrageteil aus dem Argumentarray. Das Ergebnis wird in einer HTML-Tabelle formatiert.

$args = array(
    'post_type' => 'product',
    'posts_per_page' => -1,
    'meta_key' => 'total_sales',
    'orderby' => 'meta_value_num',
    'order' => 'DESC',
    'meta_query' => array(
        array(
            'key' => 'total_sales',
            'value' => 0,
            'compare' => '>'
        )
    )
);

$output = array_reduce( get_posts( $args ), function( $result, $post ) {
    return $result .= '<tr><td>' . $post->post_title . '</td><td>' . get_post_meta( $post->ID, 'total_sales', true ) . '</td></tr>';
} );

echo '<table><thead><tr><th>' . __( 'Product', 'woocommerce' ) . '</th><th>' . __( 'Units Sold', 'woocommerce' ) . '</th></tr></thead>' . $output . '</table>';

  • tolle antwort! Es hat mir geholfen! 🙂

    – Daniel García Sánchez

    30. April 2015 um 9:44 Uhr

Wie listet man alle Produkte mit Gesamtumsatz auf
Ratnakar – StoreApps

Versuchen Sie diesen Code. Es gibt Ihnen eine Ausgabe im 2-Format

<?php
global $wpdb;
$results = $wpdb->get_results("SELECT p.post_title as product, pm.meta_value as total_sales FROM {$wpdb->posts} AS p LEFT JOIN {$wpdb->postmeta} AS pm ON (p.ID = pm.post_id AND pm.meta_key LIKE 'total_sales') WHERE p.post_type LIKE 'product' AND p.post_status LIKE 'publish'", 'ARRAY_A');
?>
<table>
    <tr>
        <th><?php _e( 'Product' ); ?></th>
        <th><?php _e( 'Unit sold' ); ?></th>
    </tr>
<?php
foreach ( $results as $result ) {
    echo "<tr>";
    echo "<td>" . $result['product'] . "</td>";
    echo "<td>" . $result['total_sales'] . "</td>";
    echo "</tr>";
}
?>
</table>
<div>
    <p><strong><?php echo __( 'Product' ) . ' - ' . __( 'Unit Sold' ); ?></strong></p>
    <?php
    foreach ( $results as $result ) {
        echo "<p>" . $result['product'] . ' - ' . $result['total_sales'] . "</p>";
    }
    ?>
</div>

Hoffe, das wird hilfreich sein

  • Es ist erwähnenswert, dass Sie wahrscheinlich $wpdb->posts und $wpdb->postmeta verwenden sollten, um sicherzustellen, dass die Tabellenpräfixe immer korrekt sind, falls Sie sie später ändern, z. B. mit iThemes Security.

    – Markus

    20. Juni 2014 um 12:03 Uhr

  • Die Verwendung der wpdb-Abfrage macht die Website langsamer.

    – Kevin Nguyen

    11. Oktober 2016 um 15:58 Uhr

  • @ KevinNguyen Im obigen Szenario $wpdb->get_results gibt Ergebnisse, 80-90% schneller als get_posts. Welche Methode würden Sie vorschlagen?

    – Ratnakar – StoreApps

    12. Oktober 2016 um 10:44 Uhr

  • @Ratnakar-StoreApps danke für den nützlichen Code, ich möchte nur wissen, ob ich die Abfrage nach einer bestimmten Kategorie filtern möchte (siehe nur Produkte und Einzelverkauf einer bestimmten Kategorie).

    – Amir Nikfar

    22. Februar 2020 um 17:06 Uhr

1003710cookie-checkWie listet man alle Produkte mit Gesamtumsatz auf?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy