آموزش غیرفعال کردن صفحه تسویه حساب ووکامرس
در بسیاری مواقع کاربران تمایل دارند کاربر بدون دیدن صفحه تسویه حساب مستقیم از سبد خرید به درگاه منتقل شود یا کاربرانی که از پِی زیتو استفاده میکنند میخواهند صفحه تسویه حساب ووکامرس را غیرفعال کنند و صورتحساب پِی زیتو را فقط نمایش دهند.
در این آموزش شیوه غیرفعال کردن صفحه تسویه حساب ووکامرس و انتقال مستقیم از سبد خرید به درگاه پرداخت را آموزش خواهیم داد.
برای انجام اینکار نیاز به اضافه نمودن کد به قالب شما وجود دارد، کدهای و توابع اختصاصی معمولا در فایل فانکشن قالب اضافه میشوند.
۱- برای حذف صفحه تسویه حساب ووکامرس نیاز است که حتما فقط یک درگاه پرداخت فعال داشته باشید.
* اگر از پِی زیتو استفاده نمیکنید که مجبور هستید فقط یک درگاه پرداخت خود را فعال کنید.
* اگر از پِی زیتو استفاده میکنید، میتوانید چند درگاه پرداخت داشته باشید و با مراجعه به افزون پِی زیتو / زبانه تنظیمات / زبانه افزونهها/ زبانه ووکامرس گزینه با عنوان نمایش فهرست درگاهها را غیرفعال نمایید. با این گزینه فقط یک درگاه در ووکامرس نمایش داده میشود حتی اگر چند درگاه داشته باشید و میتوانید با فعال نمودن صفحه صورت حساب پِی زیتو در مرحله بعد امکان انتخاب از میان درگاههای فعال را به کاربر بدهید.
۲- ابتدا فایل 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;
}
}
}
}
}
این کد صفحه تسویه حساب یا همان صورت حساب ووکامرس دیگر نمایش داده نمیشود و کاربر مستقیم به درگاه پرداخت متصل میشود.
اگر در اجرای کد و پیاده سازی آن دچار مشکل شدید حتما با پشتیبانی پِی زیتو در ارتباط باشید.