غیرفعال کردن ارسال ایمیل صورتحساب برای سفارش پرداخت در منزل ووکامرس
یکی از روشهای پرداخت قابل فعالسازی در سیستم وردپرس و ووکامرس روش پرداخت درب منزل یا روش پرداخت COD است. این روش پرداخت در وردپرس به این شکل است که پس از ثبت سفارش عملا سفارش به صورت موفق ثبت میشود و صورتحساب برای کاربر ارسال میشود.
در این نوشته به روش غیرفعالسازی ارسال ایمیل پس از سفارشهای ووکامرس در روش پرداخت درب منزل میپردازیم.
جلوگیری از ارسال ایمیل صورتحساب پرداخت در منزل وردپرس
برای غیرفعالسازی ارسال این ایمیل قطعه کد زیر را در فایل functions.php قالب فعال سایت وردپرسی خود قرار دهید:
add_filter( 'woocommerce_email_enabled_customer_completed_order', 'disable_completed_email_for_cod', 10, 2 );
function disable_completed_email_for_cod( $enabled, $order ) {
if ( ! $order ) {
return $enabled;
}
if ( $order->get_payment_method() === 'cod' ) {
return false;
}
return $enabled;
}
پایان!
در صورتی که سوالهای بیشتری در ارتباط با وردپرس دارید در بخش نظرات این نوشته برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]



















اگر بخوایم برای پرداخت کارت به کارت هم مثل پرداخت در محل همین ایمیل ارسال نشه باید یک شرط جدا اضافه کنیم؟
بله. میتوانید شناسه درگاه موردنظر را هم به شرط اضافه کنید. مثلا برای انتقال مستقیم بانکی ووکامرس شناسه معمولا bacs است. بهتر است قبل از استفاده، شناسه دقیق درگاه فروشگاه خودتان را بررسی کنید.
میشه این شرط رو طوری تغییر داد که فقط برای بعضی محصولات ایمیل پرداخت در محل ارسال نشه و برای بقیه محصولات ارسال بشه؟
بله. قبل از return false میتوان آیتم های سفارش را با get_items() بررسی کرد و بر اساس شناسه محصول، دسته بندی یا هر شرط دیگری تصمیم گرفت ایمیل ارسال شود یا نه.
اگر درگاه پرداخت در محل توسط یک افزونه جدا اضافه شده باشه و شناسه اش cod نباشه باید از چه مقداری داخل شرط استفاده کنیم؟
باید شناسه واقعی همان درگاه را جایگزین cod کنید. مقدار برگشتی get_payment_method() شناسه درگاه سفارش را برمیگرداند، بنابراین میتوانید آن را از اطلاعات سفارش یا کد افزونه درگاه پیدا کنید.
اگر برای سفارش پرداخت در محل ایمیل در حال پردازش هم ارسال بشه این کد اون ایمیل رو هم قطع میکنه یا فقط ایمیل تکمیل سفارش رو؟
این کد فقط ایمیل Customer Completed Order را غیرفعال میکند چون فیلتر استفاده شده مخصوص همان ایمیل است. برای ایمیل Processing باید فیلتر مربوط به همان نوع ایمیل را جداگانه کنترل کنید.
اگر این کد را داخل functions قالب اصلی بذاریم بعد از آپدیت قالب پاک میشه بهتر نیست داخل چایلد تم قرارش بدیم؟
بله، بهتر است داخل functions.php چایلد تم قرار بگیرد تا با آپدیت قالب اصلی کد از بین نرود. یک گزینه بهتر هم استفاده از افزونه های مدیریت Code Snippet است.