Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Semak sama ada Pelanggan Telah Membuat Pembelian Terdahulu dalam WooCommerce?

Bagaimana untuk Semak sama ada Pelanggan Telah Membuat Pembelian Terdahulu dalam WooCommerce?

Mary-Kate Olsen
Lepaskan: 2024-11-17 16:15:02
asal
472 orang telah melayarinya

How to Check if a Customer Has Made a Previous Purchase in WooCommerce?

Menyemak Sejarah Pembelian Pelanggan dalam WooCommerce

Dalam WooCommerce, selalunya perlu untuk menentukan sama ada pelanggan telah membuat sebarang pembelian sebelumnya. Maklumat ini boleh digunakan untuk menawarkan diskaun, ganjaran atau promosi lain yang diperibadikan berdasarkan sejarah pembelian.

Penyelesaian

Fungsi berikut, has_bought(), dengan cekap menyemak sama ada pelanggan tertentu mempunyai sebarang pesanan berbayar WooCommerce:

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

Penggunaan:

Fungsi ini boleh digunakan dalam pelbagai cara untuk menyemak sejarah pembelian pengguna dan tetamu yang log masuk:

  • Menyemak sebarang pembelian:

    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
  • Menyemak pengguna tertentu melalui ID:

    $user_id = 85;
    
    if( has_bought( $user_id ) )
          echo '<p>customer have already made a purchase</p>';
      else
          echo '<p>Customer with 0 purchases</p>';
    Salin selepas log masuk
  • Menyemak pengguna tetamu melalui pengebilan e-mel:

    $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

Nota Tambahan:

Fungsi ini telah dipertingkatkan untuk ketepatan dan keselamatan yang lebih baik, termasuk pengendalian pengguna tetamu berdasarkan e-mel pengebilan. Ia telah diuji pada WooCommerce 3 dan seharusnya berfungsi pada versi terdahulu juga.

Atas ialah kandungan terperinci Bagaimana untuk Semak sama ada Pelanggan Telah Membuat Pembelian Terdahulu dalam WooCommerce?. 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