شرطی کردن درگاه پرداخت ووکامرس بر اساس شرایط مختلف
- مقالات آموزشی
- بروزرسانی شده در
بعد از چند زبانه کردن سایت وردپرس، حتما باید فرایند شرطی کردن درگاه پرداخت ووکامرس بر اساس زبانهای مختلف را انجام دهید. در این مقاله قصد دارم نحوه انجام اینکار را دقیق به شما توضیح دهم.
چند وقت پیش (قبل از اینکه سایت Ertano را راهاندازی کنیم.) روی میهن وردپرس از پلاگین WPML برای چند زبانه کردن سایت استفاده کردیم. همراه با این پلاگین از افزونه WooCommerce Multilingual برای فروش محصولات به صورت دلاری در زبانهای مختلف استفاده کردیم. اما یک مشکل اساسی داشتیم! درگاه پرداخت ریالی بانک ملت ما روی زبان انگلیسی هم نمایش داده میشد.
پس کاربر در نسخه انگلیسی سایت هم به درگاه پرداخت ریالی دسترسی داشت و اگر فرضا قیمت محصول در نسخه انگلیسی سایت ۵۰ دلار بود، میتوانست با ۵۰ تومان محصول را خریداری کند. حال چاره چه بود؟! باید درگاه پرداخت را بر اساس زبانهای مختلف شرطی میکردیم. یعنی فقط در زبان انگلیسی درگاه پرداخت بیت کوین و فقط در زبان فارسی، درگاه پرداخت بانک ملت نمایش داده میشد.
در نهایت با استفاده از یک فیلتر وردپرسی، این مشکل را حل کردیم. حالا بعد از ویدیوی آموزش ساخت درگاه پرداخت بیت کوین در وردپرس، طبق قولی که توی ویدیو داده بودم، قصد دارم در این مقاله درباره شرطی کردن درگاه پرداخت ووکامرس صحبت کنم. آمادهاید؟ پس شروع کنیم.
آنچه در این مقاله میخوانید
شرطی کردن درگاه پرداخت ووکامرس
اولین چیزی که نیاز دارید ورود به فایل functions.php قالب سایت شما یا ساخت یک افزونه اختصاصی وردپرس هست. حالا باید کمی با PHP آشنایی داشته باشید. البته آشنایی هم نداشته باشید با یک صحیح و خطا انجام میشه. پس زیاد نگران نباشید. 😉
فراخوانی تابعی که خلق خواهیم کرد
وقتی وارد فایل functions.php شدیم. باید ابتدای فایل، کد <?php را پیدا کنید. یک خط بعد از آن یعنی در خط دوم فایل توابع وردپرس، این کد را وارد کنید:
add_filter( 'woocommerce_available_payment_gateways', 'mihanwp_conditional_gateway' );
با استفاده از کد بالا یک فیلتر جدید به ووکامرس اضافه کردیم و اطلاع دادیم که درگاههای پرداخت در دسترس باید دقیقا طبق تابعی که ما مشخص میکنیم، یعنی mihanwp_conditional_gateway فعال یا غیرفعال شوند.
خلق تابع مورد نظر
حالا باید تابع را مشخص کنیم و شرط و شروط دلخواه خودمان را در تابع اضافه کنیم. پس این کدها را هم اضافه کنید:
function mihanwp_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', 'mihanwp_conditional_gateway' );
function mihanwp_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;
}
حالا شما میتوانید کدهای دلخواه خود را بر اساس شرایط مختلف در تابع بالا جایگزین کنید و طبق شرایط دلخواهتان، درگاههای پرداخت را فعال یا غیرفعال کنید. 🙂 مثلا میتوانید شرط مربوط به گزینههای حمل و نقل را پیدا کنید و آن را در تابع ساخته شده قرار دهید. در این صورت، درگاه پرداخت شما بر اساس روشهای حمل و نقل نمایش داده خواهد شد.
شاد باشید.
سلام چجوری میتونیم از این کد ها برای شرطی کردن روی دسته خاصی از محصولات یک درگاه رو غیر فعال کنیم مثلا روی سایت دسته بندی A و B داریم میخوایم یک درگاه روی دسته های B نشون داده نشه یا روی دسته های A نشون داده بشه….
سلام … سوالی داشتم
من به یه مشکل عجیب برای درگاه پرداخت برخوردم … درگاه پرداخت سایتمون سداده … الان مشكلي كه پيش آمده اينه كه بعد از پرداخت در درگاه بانكي در مرورگر سافاري، موقع بازگشت به سايت سريعا صفحه رو نميشناسه و ارور نشون ميده ( safari can’t open this page ) وفقط هم تو مرورگر سافاری ( در ورژنهای مختلفش) این مشکل وجود داره و الان نمیدونم واقعا باید چیکارش کنم؟ … حتی به پشتیبانی سرور و سداد هم پیام دادم ولی مشکل حل نشد … شما راه حلی سراغ دارید؟
با سلام و احترام .ابتداعا بهت بگم قالب اهوارایی که ساختی عالیه برادرم. دوما مشکل من اینه که نوشته ها را هر چی میخونم بازم نمیفهمم فقط ویدیوها برای من خوبن. چرا این مبحث آموزشت فایل ویدیویی نذاشتی ؟ کاش میزاشتی و من راحت بودم!!!!!! این صحبت کد ک میکنی من گیج میشم حتما باید از رو ویدیو ببینم و انجام بدم.
درود بر شما سپاس. مقالاتی که بازدید بالا دارن براشون ویدیو میسازیم. این مدل مقالات رو فقط متن مینویسیم.
درود بر شما تیم حرفه ایی
یک سوال داشتم ممنون میشم کمک کنید
من افزونه WooCommerce Autocomplete Orders برای تایید خودکار سفارشات ووکامرس
اما قسمت تنظیمات فقط یک گزینه روشنه و بقیه فیلد ها خاموشن
اون گزینه رو تغییر هم میدم باز بفیه فیلد ها خاموشن
باید چیکار کنم
لینک اسکرین شات فرستادم
سلام ظاهرا یا لایسنس افزونه فعال نیست یا باید فیلد اول رو تغییر بدید به حالتی که بقیه فیلدها روشن بشه
سلام خسته نباشید
کاربر من وقتی تا مرحله پرداخت محصول میره(قسمت درگاه پرداخت که شماره کارت رو باید وارد کنه)
برای من ایمیل میاد که سفارش دریافت شده
قسمت روش پرداخت هم میزنه پرداخت با زرین پال
این طبیعیه؟؟!!
سلام بله طبیعیه میتونید از تنظیمات غیرفعال کنید
سلام مجدد
ممنون میشم بگید از کدوم بخش تنظیمات
توی بخش تنظیمات ووکامرس > ایمیل های ارسالی
سپاس