شرطی کردن درگاه پرداخت ووکامرس بر اساس شرایط مختلف
بعد از چند زبانه کردن سایت وردپرس، حتما باید فرایند شرطی کردن درگاه پرداخت ووکامرس بر اساس زبانهای مختلف را انجام دهید. در این مقاله قصد دارم نحوه انجام اینکار را دقیق به شما توضیح دهم.
روی بیست اسکریپت از پلاگین WPML برای چند زبانه کردن سایت استفاده کردیم. همراه با این پلاگین از افزونه WooCommerce Multilingual برای فروش محصولات به صورت دلاری در زبانهای مختلف استفاده کردیم. اما یک مشکل اساسی داشتیم! درگاه پرداخت ریالی بانک ملت ما روی زبان انگلیسی هم نمایش داده میشد.
پس کاربر در نسخه انگلیسی سایت هم به درگاه پرداخت ریالی دسترسی داشت و اگر فرضا قیمت محصول در نسخه انگلیسی سایت ۵۰ دلار بود، میتوانست با ۵۰ تومان محصول را خریداری کند. حال چاره چه بود؟! باید درگاه پرداخت را بر اساس زبانهای مختلف شرطی میکردیم. یعنی فقط در زبان انگلیسی درگاه پرداخت بیت کوین و فقط در زبان فارسی، درگاه پرداخت بانک ملت نمایش داده میشد.
در نهایت با استفاده از یک فیلتر وردپرسی، این مشکل را حل کردیم. حالا در این مقاله درباره شرطی کردن درگاه پرداخت ووکامرس صحبت کنم. آمادهاید؟ پس شروع کنیم.
شرطی کردن درگاه پرداخت ووکامرس
اولین چیزی که نیاز دارید ورود به فایل functions.php قالب سایت شما یا ساخت یک افزونه اختصاصی وردپرس هست. حالا باید کمی با PHP آشنایی داشته باشید. البته آشنایی هم نداشته باشید با یک صحیح و خطا انجام میشه. پس زیاد نگران نباشید.
فراخوانی تابعی که خلق خواهیم کرد
وقتی وارد فایل functions.php شدیم. باید ابتدای فایل، کد <?php را پیدا کنید. یک خط بعد از آن یعنی در خط دوم فایل توابع وردپرس، این کد را وارد کنید:
add_filter( 'woocommerce_available_payment_gateways', 'bistscript_conditional_gateway' );
با استفاده از کد بالا یک فیلتر جدید به ووکامرس اضافه کردیم و اطلاع دادیم که درگاههای پرداخت در دسترس باید دقیقا طبق تابعی که ما مشخص میکنیم، یعنی bistscript_conditional_gateway فعال یا غیرفعال شوند.
خلق تابع مورد نظر
حالا باید تابع را مشخص کنیم و شرط و شروط دلخواه خودمان را در تابع اضافه کنیم. پس این کدها را هم اضافه کنید:
function bistscript_conditional_gateway( $available_gateways ) { }
حالا باید داخل تابع بالا، یعنی بین { و } کدهای دلخواهمان را اضافه کنیم.
شرط و شروط ما برای نمایش درگاه پرداخت
مثلا فرض کنید میخواهید درگاه پرداخت دلخواه برای کاربرانی که وارد سایت شدهاند فعال کنید. پس باید کد زیر را در تابع بالا قرار دهیم:
$user = wp_get_current_user(); if ( isset( $available_gateways['mellat'] ) && !is_user_logged_in()) { unset( $available_gateways['mellat'] ); } return $available_gateways;
فراموش نکنید در کد بالا باید به جای mellat از نام درگاه پرداخت دلخواه خود استفاده کنید. نام درگاه پرداخت در کدهای پلاگین درگاه پرداخت شما موجود هست.
نمایش درگاه پرداخت بر اساس زبان WPML
حالا فرض کنیم میخواهیم به ازای زبانهای مختلف در WPML درگاهها را فعال یا غیرفعال کنیم. پس باید از کد زیر استفاده کنیم.
if(ICL_LANGUAGE_CODE == 'en'){ unset( $available_gateways['mellat'] ); } if(ICL_LANGUAGE_CODE == 'fa'){ unset( $available_gateways['paypal'] ); } return $available_gateways;
در کد بالا من مشخص کردم که اگر زبان سایت انگلیسی بود، درگاه پرداخت ملت را غیرفعال کن و اگر زبان سایت فارسی بود، درگاه پرداخت پی پال غیرفعال شود.
هر آنچه که ساختیم
به طور کلی برای شرطی کردن درگاه پرداخت ووکامرس بر اساس زبانهای مختلف، باید از این کد استفاده کنیم:
add_filter( 'woocommerce_available_payment_gateways', 'bistscript_conditional_gateway' ); function bistscript_conditional_gateway( $available_gateways ) { if(ICL_LANGUAGE_CODE == 'en'){ unset( $available_gateways['mellat'] ); } if(ICL_LANGUAGE_CODE == 'fa'){ unset( $available_gateways['paypal'] ); } return $available_gateways; }
حالا شما میتوانید کدهای دلخواه خود را بر اساس شرایط مختلف در تابع بالا جایگزین کنید و طبق شرایط دلخواهتان، درگاههای پرداخت را فعال یا غیرفعال کنید. مثلا میتوانید شرط مربوط به گزینههای حمل و نقل را پیدا کنید و آن را در تابع ساخته شده قرار دهید. در این صورت، درگاه پرداخت شما بر اساس روشهای حمل و نقل نمایش داده خواهد شد.
شاد باشید.
نوشته شرطی کردن درگاه پرداخت ووکامرس بر اساس شرایط مختلف اولین بار در بیست اسکریپت. پدیدار شد.