WooCommerce – Abrufen von abgeschlossenen Statusaufträgen durch den Benutzer in einem bestimmten Zeitraum

Lesezeit: 3 Minuten

WooCommerce Abrufen von abgeschlossenen Statusauftragen durch den Benutzer in
Amino

Ich muss die getätigten Einkäufe eines Benutzers im letzten Monat nach BENUTZER-ID in Woocommerce abrufen.

Benutzer haben Level (Gold, Silber):

  • Gold-Mitglieder können jeden Monat 4 Artikel kaufen;
  • Silber-Mitglieder können 1 Artikel pro Monat kaufen.

Ich muss dies überprüfen, bevor ich einen Artikel in den Warenkorb lege. Ich möchte kein Plugin nur für diese Funktion verwenden (was übrigens nicht gefunden werden konnte).

Ist das möglich?
Wie kann ich das erreichen?

Danke

  • “Ich möchte kein Plugin nur für diese Funktion verwenden”, müssen Sie eines schreiben. Sie sollten mit beginnen dieses Tutorial. Bestellungen sind einfach WP_Query und Sie können Datumsparameter verwenden, um weiter zu verfeinern. Obwohl sich Bestellungen von Bestellartikeln unterscheiden, bin ich mir nicht sicher, welche Sie benötigen. Posten Sie Ihren Code, damit wir Sie anleiten können.

    – Helgathewikinger

    30. August 2016 um 21:09 Uhr

1647326946 995 WooCommerce Abrufen von abgeschlossenen Statusauftragen durch den Benutzer in
LoicTheAztec

Es ist möglich, die zu bekommen Gesamtzahl der gekauften Artikel bis zum aktueller Kunde in den letzten 30 Tagen.

Hier ist der Code dieser Funktion basierend auf dieser Antwort:

function current_customer_month_count( $user_id=null ) {
    if ( empty($user_id) ){
        $user_id = get_current_user_id();
    }
    // Date calculations to limit the query
    $today_year = date( 'Y' );
    $today_month = date( 'm' );
    $day = date( 'd' );
    if ($today_month == '01') {
        $month="12";
        $year = $today_year - 1;
    } else{
        $month = $today_month - 1;
        $month = sprintf("%02d", $month);
        $year = $today_year - 1;
    }

    // ORDERS FOR LAST 30 DAYS (Time calculations)
    $now = strtotime('now');
    // Set the gap time (here 30 days)
    $gap_days = 30;
    $gap_days_in_seconds = 60*60*24*$gap_days;
    $gap_time = $now - $gap_days_in_seconds;

    // The query arguments
    $args = array(
        // WC orders post type
        'post_type'   => 'shop_order',
        // Only orders with status "completed" (others common status: 'wc-on-hold' or 'wc-processing')
        'post_status' => 'wc-completed', 
        // all posts
        'numberposts' => -1,
        // for current user id
        'meta_key'    => '_customer_user',
        'meta_value'  => $user_id,
        'date_query' => array(
            //orders published on last 30 days
            'relation' => 'OR',
            array(
                'year' => $today_year,
                'month' => $today_month,
            ),
            array(
                'year' => $year,
                'month' => $month,
            ),
        ),
    );

    // Get all customer orders
    $customer_orders = get_posts( $args );
    $count = 0;
    if (!empty($customer_orders)) {
        $customer_orders_date = array();
        // Going through each current customer orders
        foreach ( $customer_orders as $customer_order ){
            // Conveting order dates in seconds
            $customer_order_date = strtotime($customer_order->post_date);
            // Only past 30 days orders
            if ( $customer_order_date > $gap_time ) {
                $customer_order_date;
                $order = new WC_Order( $customer_order->ID );
                $order_items = $order->get_items();
                // Going through each current customer items in the order
                foreach ( $order_items as $order_item ){
                    $count++;
                }
            }
        }
        return $count;
    }
}

Dieser Code geht in die function.php-Datei Ihres aktiven Child-Themes (oder Themes) oder auch in jede Plugin-Datei.

Die Funktion akzeptiert ein optionales user_id Argument (falls erforderlich). Zum Beispiel für eine user_id mit 56 value, verwenden Sie die Funktion auf diese Weise:

// For user ID: "56".
$number_of_items_in_last_month = current_customer_month_count('56');

Die Funktion wird erhalten die aktuelle Benutzer-ID in $user_id = get_current_user_id();wenn Sie kein Argument setzen user_id wert, so:

// For current logged user.
$number_of_items_in_last_month = current_customer_month_count();

Sie können diese Funktion in einer bedingten if-Anweisung verwenden, um die Schaltfläche zum Hinzufügen zum Warenkorb durch einige WooCommerce auszublenden oder zu ersetzen Haken oder zugehörige Vorlagen.
Sie könnten bei dieser Aufgabe unterstützt werden, indem Sie eine neue Frage stellen, die diesen Code enthält, und weitere Details dazu angeben, wie Sie es tun möchten.

Dieser Code ist getestet und funktioniert.


Referenzen: Überprüfen, ob der Kunde bereits etwas in WooCommerce gekauft hat

1004100cookie-checkWooCommerce – Abrufen von abgeschlossenen Statusaufträgen durch den Benutzer in einem bestimmten Zeitraum

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

Privacy policy