Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menentukan sama ada Pelanggan WooCommerce Mempunyai Sejarah Pembelian?

Bagaimana untuk Menentukan sama ada Pelanggan WooCommerce Mempunyai Sejarah Pembelian?

Patricia Arquette
Lepaskan: 2024-11-13 13:09:02
asal
995 orang telah melayarinya

How to Determine if a WooCommerce Customer Has a Purchase History?

Menentukan Sejarah Pembelian Pelanggan dalam WooCommerce

Apabila membangunkan pemalam WooCommerce, selalunya menjadi perlu untuk menyemak sama ada pelanggan telah membuat pembelian sebelumnya. Maklumat ini boleh dimanfaatkan untuk menyesuaikan tawaran dan promosi dengan sewajarnya.

Menyemak Sejarah Pembelian Pelanggan

Untuk menentukan sama ada pelanggan telah membuat sebarang pembelian, fungsi yang ringan dan dioptimumkan boleh bekerja:

function has_bought( $value = 0 ) {
    if ( ! is_user_logged_in() && $value === 0 ) {
        return false;
    }

    global $wpdb;
    
    // Based on user ID (registered users)
    if ( is_numeric( $value) ) { 
        $meta_key   = '_customer_user';
        $meta_value = $value == 0 ? (int) get_current_user_id() : (int) $value;
    } 
    // Based on billing email (Guest users)
    else { 
        $meta_key   = '_billing_email';
        $meta_value = sanitize_email( $value );
    }
    
    $paid_order_statuses = array_map( 'esc_sql', wc_get_is_paid_statuses() );

    $count = $wpdb->get_var( $wpdb->prepare("
        SELECT COUNT(p.ID) FROM {$wpdb->prefix}posts AS p
        INNER JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
        WHERE p.post_status IN ( 'wc-" . implode( "','wc-", $paid_order_statuses ) . "' )
        AND p.post_type LIKE 'shop_order'
        AND pm.meta_key = '%s'
        AND pm.meta_value = %s
        LIMIT 1
    ", $meta_key, $meta_value ) );

    // Return a boolean value based on orders count
    return $count > 0;
}
Salin selepas log masuk

Contoh Penggunaan

1. Menyemak Pembelian Pengguna Berdaftar:

if( has_bought() )
    echo '<p>You have already made a purchase</p>';
else
    echo '<p>Welcome, for your first purchase you will get a discount of 10%</p>';
Salin selepas log masuk

2. Menyemak Pembelian Pengguna Tetamu Berdasarkan E-mel Pengebilan:

// Define the billing email (string)
$email = '[email&#160;protected]';

if( has_bought( $email ) )
        echo '<p>customer have already made a purchase</p>';
    else
        echo '<p>Customer with 0 purchases</p>'
Salin selepas log masuk

Dengan menggunakan fungsi ini, pembangun pemalam boleh menentukan dengan mudah sama ada pelanggan mempunyai sejarah pembelian dalam WooCommerce, membolehkan promosi disasarkan dan diskaun untuk pelanggan yang dipertingkatkan pertunangan.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan sama ada Pelanggan WooCommerce Mempunyai Sejarah Pembelian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan