جستجو
Close this search box.

نمایش پاپ آپ خاموش کردن VPN در صفحه تسویه حساب

فانکشن 24:
متاسفانه این روزا با توجه به ایران اکسس شدن درگاه های بانکی، خیلی از وبسایت ها به مشکل خوردن. حتی کسب و کارهایی که هاست ایران دارن هم به علت استفاده گسترده کاربرا از سرویس های تغییر IP، مشکل دارن چرا که درگاه های بانکی فقط با آی پی های ایران در دسترس هستن.
چند روز پیش یه فانکشن دیدم که دوست عزیزی به اسم پویا کاوه زحمتش رو کشیده بودن که میومد از طریق سرویس ip-api.com، آی پی کاربر رو میگرفت و بر اون اساس، کشور کاربر رو تشخیص میداد. در صورتی که لوکیشن هر چیزی غیر از ایران بود (حالا چه کسایی که داخل ایران هستن و تغییر IP دادن و چه کسایی که کلا خارج هستن و آی پی ایران ندارن) یه پیام مبنی بر خاموش کردن فیلترشکن در قالب نوتیف های دیفالت ووکامرس توی صفحه تسویه حساب نمایش میداد.
به ذهنم رسید که اون فانکشن رو از نظر ظاهری بهینه تر کنم که نتیجه ش شد فانکشن زیر.
توی این فانکشن نحوه نمایش پیام رو تغییر دادم و از کتابخانه SweetAlert2 برای نمایش پیام استفاده میکنیم.
این فانکشن متشکل از 3 قسمت مختلف هست.
فانکشن اول با نام enqueue_sweetalert_scripts که میاد فایل های لازم کتابخانه SweetAlert2 رو داخل صفحه تسویه حساب فراخوانی میکنه.
فانکشن دوم با نام isUserFromIran که میاد از طریق سرویس وبسایت ip-api.com، آی پی کاربر و در نتیجه لوکیشنش رو پیدا میکنه.
فانکشن آخر با نام displayVPNMessage که میاد پیام دلخواه ما رو در قالب یک پاپ آپ شیک و تمیز به کاربر نمایش میده.
پیش نمایش پیامی که به کاربر در صفحه تسویه حساب نمایش داده میشه رو میتونید توی عکس زیر ببینید:

نحوه استفاده: کد زیر رو انتهای فایل function.php یا functions.php قالب فعال تون قرار بدید.
(در صورتی که قالبتون کاستوم فانکشن داره و اونجا تستش کردین و کار نکرد، کد رو داخل فانکشن اصلی قرار بدید)

نکته:
برای استایل دادن به عناصر داخل پاپ آپ میتونید از کلاس ها و آی دی های هر عنصر استفاده کنید. در ضمن متن پیام تون هم در قالب یک span و با آی دی vpn-message-text نمایش داده میشه که با این آی دی میتونید راحت تر بهش استایل بدید.

				
					function enqueue_sweetalert_scripts() {
    if (is_checkout()) {
        wp_enqueue_script( 'sweetalert2', 'https://cdn.jsdelivr.net/npm/sweetalert2@11', array(), null, true );
    }
}
add_action( 'wp_enqueue_scripts', 'enqueue_sweetalert_scripts' );





function isUserFromIran() {
    $userIP = $_SERVER['REMOTE_ADDR'];

    $ch = curl_init();

    $geolocationAPI = "http://ip-api.com/json/$userIP";
    curl_setopt($ch, CURLOPT_URL, $geolocationAPI);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);

    $response = curl_exec($ch);

    if ($response === false) {
        curl_close($ch);
        return false;
    }

    curl_close($ch);

    $data = json_decode($response);

    if (isset($data->country) && $data->country == "Iran") {
        return true;
    }

    return false;
}





function displayVPNMessage() {
    if (!isUserFromIran() && is_checkout()) {
        ?>
        <script>
        document.addEventListener("DOMContentLoaded", function() {
            Swal.fire({
                icon: 'warning',
                title: 'توجه!',
                html: '<span id="vpn-message-text">به منظور جلوگیری از بروز خطا در پردازش سفارش شما، خواهشمند است قبل از ورود به درگاه بانکی، VPN خود را خاموش نمایید.</span>',
                confirmButtonText: 'تایید',
                allowOutsideClick: false
            })
        });
        </script>
        <?php
    }
}
add_action('wp_footer', 'displayVPNMessage');
				
			
اشتراک گذاری فانکشن:
قوانین و مقررات
۲ پاسخ
  1. دمتون گرم خیلی کاربردی و عالی بود و اینکه سایتتون هم خیلی قشنگه میرم بقیه قسمت هاشو ببینم و عشق کنم با سایتتون 🙂

دیدگاه ها

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

:: شبکه های اجتماعی ::