


Bagaimana untuk Semak sama ada Pelanggan Telah Membuat Pembelian Terdahulu dalam WooCommerce?
Nov 17, 2024 pm 04:15 PMMenyemak 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; }
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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

11 skrip pemendek URL terbaik PHP (percuma dan premium)

Bekerja dengan Data Sesi Flash di Laravel

Respons HTTP yang dipermudahkan dalam ujian Laravel

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React

12 skrip sembang php terbaik di codecanyon
