میخواهیم بدانیم آیا راهی برای ارسال یک ایمیل سفارشی برای کاربر در هنگام انجام (اولین) پرداخت در ووکامرس وجود دارد یا خیر.با توجه به استفاده از پلاگین Woocommerce Subscriptions .
محتوای آن هرچیزی می تواند باشد ولی حال فرض بگیرید این ایمیل در مورد دستورالعمل هایی برای یادگیری نحوه راه اندازی یک حساب کاربری در وب سایت موردنظر است.
هدف این است که این ایمیل با دستورالعمل ها فقط برای اولین پرداخت برای کاربران ارسال شود.یعنی در صورت ثبت سفارش بعدی این ایمیل ارسال نشود و فقط ایمیل تکمیل سفارش (ایمیل ووکامرس عادی) ارسال شود.
روش اول
ما می توانیم برای اولین بار یک نامه سفارشی ارسال کنیم. برای اینکار از دو hook زیر استفاده می کنیم :
- woocommerce_order_status_processing
- woocommerce_order_status_completed
پس از ثبت سفارش کاربر، سفارش به عنوان پردازش نشان داده میشود که میتوانیم از woocommerce_order_status_processing hook استفاده کنیم .همچنین میتوانیم از woocommerce_order_status_completed hook برای بررسی وضعیت سفارش های تکمیل شده استفاده کنیم. شما می توانید وضعیت سفارش را در افزونه اشتراک ووکامرس تغییر دهید.
قطعه کدی که در زیر مشاهده می کنید توسط برنامه کامپایلر به جهت تست آزمایش شده و خروجی صحیح مدنظر را بدست آورد.
//code goes to function.php you can generate child theme and cop add_action( 'woocommerce_order_status_completed', 'nazcloak_order_complete_actions', 10, 1); function nazcloak_order_complete_actions($order_id) { $order = wc_get_order( $order_id ); $user_id = $order->get_user_id(); $args = array( 'customer_id' => $user_id, 'limit' => 2, // if you set -1 it'll retrive all orders ); $orders = wc_get_orders($args); if( !empty($orders) && count($orders) < 2 ) { $to = $order->get_billing_email(); //to get user email $first_name = $order->get_billing_first_name(); $subject = 'Thank You for Subscription!'; $message = "Hello $first_name, your message."; wp_mail( $to, $subject, $message ); //send email using } }
برای تغییر ایمیل :
add_filter("wp_mail_from", function($from){ return "from@domain.com"; });
روش دوم
function send_custom_email($subscription) { $start_date = $subscription->get_date('start'); if (date('Y-m-d') === date('Y-m-d', strtotime($start_date))) { // Send the email. } } add_action('woocommerce_subscription_payment_complete', 'send_custom_email');