آموزش غیرفعال کردن صفحه تسویه حساب ووکامرس
در بسیاری مواقع کاربران تمایل دارند کاربر بدون دیدن صفحه تسویه حساب مستقیم از سبد خرید به درگاه منتقل شود یا کاربرانی که از پِی زیتو استفاده میکنند میخواهند صفحه تسویه حساب ووکامرس را غیرفعال کنند و صورتحساب پِی زیتو را فقط نمایش دهند.
در این آموزش شیوه غیرفعال کردن صفحه تسویه حساب ووکامرس و انتقال مستقیم از سبد خرید به درگاه پرداخت را آموزش خواهیم داد.
برای انجام اینکار نیاز به اضافه نمودن کد به قالب شما وجود دارد، کدهای و توابع اختصاصی معمولا در فایل فانکشن قالب اضافه می شوند.
۱- برای حذف صفحه تسویه حساب ووکامرس نیاز است که حتما فقط یک درگاه پرداخت فعال داشته باشید.
* اگر از پِی زیتو استفاده نمی کنید که مجبور هستید فقط یک درگاه پرداخت خود را فعال کنید.
* اگر از پِی زیتو استفاده می کنید، می توانید چند درگاه پرداخت داشته باشید و با مراجعه به افزون پِي زیتو / زبانه تنظیمات / زبانه افزونهها/ زبانه ووکامرس گزینه با عنوان نمایش فهرست درگاهها را غیرفعال نمایید. با این گزینه فقط یک درگاه در ووکامرس نمایش داده می شود حتی اگر چند درگاه داشته باشید و می توانید با فعال نمودن صفحه صورت حساب پِی زیتو در مرحله بعد امکان انتخاب از میان درگاههای فعال را به کاربر بدهید.
۱- ابتدا فایل function.php مربوط به قالب سایت را پیدا می کنیم و آن را ویرایش می کنیم. این فایل معمولا در این مسیر است:
/wp-content/themes/your-theme/function.php
در آدرس بالا به جای پوشه your-theme باید اسم پوشه قالبتان را جایگزین کنید و درواقع وارد آن پوشه شوید.
سپس فایل function.php را ویرایش نمایید.
۲- در انتهای فایل یک Enter بزنید و کد زیر را اضافه نمایید.
add_action('template_redirect', 'pa_redirect_or_show_payment_gateway_error'); function pa_redirect_or_show_payment_gateway_error() { if (is_checkout() && !is_wc_endpoint_url()) { $available_gateways = WC() -> payment_gateways -> get_available_payment_gateways(); if (empty($available_gateways)) { wc_add_notice('هیچ درگاه پرداختی فعال نیست. حتما باید یک درگاه برای کارکرد صحیح کد عدم نمایش صفحه صورتحساب فعال باشد.', 'error'); return; } if (count($available_gateways) > 1) { wc_add_notice('برای عملکرد صحیح کد عدم نمایش صفحه صورتحساب باید فقط یک درگاه پرداخت باید فعال باشد.', 'error'); return; } $gateway = current($available_gateways); if (isset(WC() -> session)) { $order_id = WC() -> session -> get('order_awaiting_payment'); if (!$order_id) { $checkout = WC() -> checkout(); $order_id = $checkout -> create_order([ 'billing' => [ 'first_name' => '', 'last_name' => '', 'email' => '', ], 'payment_method' => current(array_keys($available_gateways)), ]); } $order = wc_get_order($order_id); if ($order && method_exists($gateway, 'process_payment')) { $payment_result = $gateway -> process_payment($order_id); if (!empty($payment_result['redirect'])) { wp_redirect($payment_result['redirect']); exit; } } } } }
این کد صفحه تسویه حساب یا همان صورت حساب ووکامرس دیگر نمایش داده نمی شود و کاربر مستقیم به درگاه پرداخت متصل می شود.
اگر در اجرای کد و پیاده سازی آن دچار مشکل شدید حتما با پشتیبانی پِی زیتو در ارتباط باشید.