عنوان های این مقاله
چرا باید زوم سایت رو در موبایل غیر فعال کرد؟
خب، اول از همه باید بگم نحوه غیر فعال کردن زوم سایت در موبایل چیه و چرا لازم که این موضوع جدیه ولی خیلی سادهست توی صفحات مخصوص مثل فرمهای ورود، صفحات پرداخت یا صفحاتی که طراحی واکنشگرا دارن، وقتی کاربر داره متن مینویسه یا چیزی رو انتخاب میکنه، مرورگر موبایل معمولاً زوم میکنه و این بزرگنمایی ناخواسته گاهی باعث میشه رابط کاربری بهم بریزه یا فرمها جا به جا بشن و کاربر گیج شه. به همین خاطر، اگه بخوای تجربه کاربری تمیز و بدون دردسر ارائه بدی، نیاز داری بدونی توی این مقاله از سایت رامون طالع همه چیز در مورد این موضوع رو توضیح میدم.
البته باید توجّه کنی که این کار روی دسترسیپذیری (accessibility) تأثیر میذاره؛ چون بعضیا به زوم نیاز دارن، ولی کلیت موضوع اینه که وقتی طراحی درست و واکنشگرا باشه، اون زومهای ناخواسته فقط باعث ایجاد مشکل میشن.
نحوه غیر فعال کردن زوم سایت در موبایل

حالا وقتشه بری سراغ اصل مطلب. اگه سوالت اینه که دقیقاً نحوه غیر فعال کردن زوم سایت در موبایل چطوریه، جواب اینه توی سایت وردپرسی فقط کافیه یک متا تگ viewport تو فایل header.php یا از طریق اکشن wp_head اضافه بشه. این کد رو ببین:
phpCopyEditadd_action('wp_head', function(){
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">';
}, 1);
یا اگه راحتتری، مستقیماً تو header.php قرارش بده:
htmlCopyEdit<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
این دقیقاً همون چیزیست که تو سوال اول گفتیم، ولی اینبار برای نحوه غیر فعال کردن زوم سایت در موبایل در وردپرس:
width=device-widthباعث میشه عرض صفحه همون عرض موبایل باشه،initial-scale=1.0از همون اول مقیاس عادی صفحه باشه،maximum-scale=1.0مرز زوم رو میذاره روی همون اول،user-scalable=noهم دست کاربر رو برای زوم قطع میکنه.
این مطمئناً روی وردپرس کار میکنه و حتی میتونی فقط برای صفحات خاص (مثلاً فرم) از شرطis_page()یاis_checkout()استفاده کنی تا فقط اون صفحات خاص این متا رو داشته باشن و باقی سایت همچنان قابلیت زوم داشته باشه.
نکات تکمیلی برای وردپرسیها
یادت باشه که نحوه غیر فعال کردن زوم سایت در موبایل فقط نیمی از راهه. نیمی دیگه اینه که طراحی سایتت واکنشگرا و فونتش خوانا باشه. وردپرس پر از تمهای آمادهست ولی بعضیشون فونتشون کمتر از 16px هست، که باعث میشه روی آیفون وقتی فرمها فوکوس میشن، مرورگر خودش زوم کنه. برای جلوگیری از اون مشکل، باید حداقل سایز فونت input ها رو 16px تنظیم کنی:
cssCopyEditinput, select, textarea {
font-size: 16px !important;
}
این براساس تجربه کاربران و فرومها مثل اونایی که توی دوتا گپ هستن توصیه شده. اگه اینکار رو انجام بدی، ممکنه اصلاً دیگه نیازی به user-scalable=no هم نداشته باشی، چون خود مرورگر دیگه زوم اتوماتیک نمیکنه.
ملاحظات دسترسیپذیری
دسترسیپذیری برای افراد کمبینا خیلی مهمه. استاندارد WCAG Level AA میگه باید اجازه بدم کاربر بتونه تا 200٪ زوم کنه بدون اینکه چیپ سایت بشه. یعنی اگه تمام سایت رو بخوای زوم رو ببندی، ممکنه خطا دریافت کنی و برای این دسته از افراد تجربه بدی بسازی. پیشنهاد به این هستش که فقط تو موارد بسیار خاص و محدود، مثل صفحات سایت که طراحیش خیلی دقیق هست (اپمانند باشن)، این کار رو انجام بدی. در غیر این صورت یا اصلاً این کد رو نگذار، یا فقط تو صفحات خاص. استراتژی خوب اینه که فقط تو صفحات پرداخت یا سبد خرید، این محدودیت اعمال بشه، نه کل سایت.
روش جایگزین در وردپرس بدون کد
اگر دوست نداری کد اضافه کنی یا نگران هستی که بعداً با آپدیت تم از بین بره، یه راه ساده برای نحوه غیر فعال کردن زوم سایت در موبایل هست استفاده از افزونه Accessibility Checker. این افزونه گزینهای داره به اسم Make viewport scalable که متا تگ viewport رو بررسی و در صورت یافتن user-scalable=no اون رو حذف میکنه یا اصلاح میکنه. همینطوری کاری انجام داده باشی. فقط باید یه پلاگین نصب کنی، فعالش کنی، و تیک مربوط بهش رو بزنید. سریع، راحت و بدون دردسر!
نتیجهگیری
پس تا اینجا کاملاً یاد گرفتن نحوه غیر فعال کردن زوم سایت در موبایل مخصوص وردپرس:
- متای viewport با ویژگی
user-scalable=noرو تنها در صفحات خاص (مثل فرم یا پرداخت) اضافه کن - فونت input رو حداقل 16px کن تا زوم اتوماتیک مرورگر فعال نشه
- اگر دسترسیپذیری واست مهمه (معمولاً باید باشه)، این محدودیت رو فقط در جاهای ضروری اعمال کن
- یا افزونه Accessibility Checker رو نصب کن و اجازه بده خودش متا تگ رو مدیریت کنه
با این راهکارها، هم ظاهر سایت تمیز میمونه، هم کاربر موبایلت تجربه بهتری داره، هم مشکلی برای دسترسیپذیری پیش نمیاد.
سوالات متداول
اگه از صفحهساز مثل Elementor استفاده میکنم چیکار کنم؟
بهترین جا برای قرار دادن کد، فایل header.php تم فرزندته یا از اکشن wp_head. در Elementor Pro میتونی با HTML عنصر مخصوص این متا رو درج کنی، یا افزونه Accessibility Checker استفاده کنی.
آیا این محدودسازی روی همه صفحات وردپرسم اعمال بشه؟
نه، فقط اگه کد رو عام بزاری. اما میتونی با استفاده از is_page() یا is_checkout() محدودش کنی.
افزونه معرفی شده چجوری کار میکنه؟
افزونه Accessibility Checker این گزینه رو داره و اگه تیکش رو بزنی، خودش متا تگ viewport رو بررسی و در صورت نیاز اصلاح میکنه.
من وردپرس ندارم، اگر HTML خالص باشه چی؟
همون meta viewport رو در <head> قرار میدی. فقط کافیه همون خط <meta name="viewport" …> تو HTML باشه.
برای کاربران کمبینا چه پیشنهادی داری؟
به جای غیرفعال کردن زوم، طراحی واکنشگرا و فونت بزرگ استفاده کن تا نیازی به زوم نباشه یا زوم غیرضروری نداشته باشی.


