وودمارت در وردپرس فارسی: بعد از نصب دمو، فونت فارسی چه می‌شود؟

برچسب نام روی زمینه قهوه‌ای، با نوار سبز و عبارت «HELLO my name is» و نام درشت «Arial»، کنار عنوان «وودمارت در وردپرس فارسی: بعد از نصب دمو، فونت فارسی چه می‌شود؟» و نوار «کروم ۱۵۵ روی ویندوز، بعد از دمو»
محصولات زیر برای شماست...
جدیدترین مقالات
دسترسی سریع
فهرست محتوا

روی وردپرس ۷٫۱٫۲ فارسی، قالب وودمارت نسخه ۸٫۶٫۴ را نصب کردیم و دموی «WoodMart Main» را آوردیم. نصب دمو با حافظه، زمان اجرا و متغیرهای ورودی پیش‌فرض PHP در دو بار ۷۸ و ۸۷ ثانیه طول کشید و چیدمان خودش راست‌چین شد. اما حروف فارسی صفحه‌ها در کروم ویندوز ما با Arial کشیده می‌شدند، فونتی که کسی انتخاب نکرده بود: دمو فونت متن را از «System font stack» به Lato برد و فونت عنوان‌ها را Poppins کرد، Lato حروف فارسی را نکشید و مرورگر به فونت بعدی فهرست رسید.

در کرومیوم ۱۵۲ روی لینوکس ما همان صفحه با Noto Sans Arabic کشیده شد. یعنی دستگاه بازدیدکننده فونت متن فارسی را تعیین می‌کند، مگر خودتان فونتی بگذارید. راه‌حل در بخش فونت است: برای هر وزن یک فایل woff2 کافی بود.

آزمایش‌ها روی یک سایت داکری بود: وردپرس ۷٫۱٫۲، ووکامرس ۱۱٫۲٫۱، ووکامرس فارسی ۱۰٫۰٫۶ و المنتور ۴٫۳٫۵. فونت‌ها را با کروم ۱۵۵ روی ویندوز و کرومیوم ۱۵۲ روی لینوکس سنجیدیم؛ روی گوشی نسنجیدیم.

آپلود قالب با پیام «پیوند منقضی شده» رد می‌شود

فایل قالب ۳۶٫۵ مگابایت است. با سقف‌های پیش‌فرض PHP (آپلود ۲ و پست ۸ مگابایت)، در «نمایش > پوسته > افزودن پوسته > بارگذاری پوسته» بعد از ۱٫۴ ثانیه این پیام آمد: «پیوندی که شما دنبال می‌کردید منقضی شده است.» پیام به پیوند ربطی نداشت. لاگ سرور هشدار می‌داد اندازه درخواست (۳۸٬۲۹۰٬۲۶۵ بایت) از سقف post_max_size (۸٬۳۸۸٬۶۰۸ بایت) بیشتر است.

صفحه خطای وردپرس فارسی بعد از بارگذاری قالب ۳۶٫۵ مگابایتی با Post_Max_Size برابر ۸ مگابایت: «پیوندی که شما دنبال می‌کردید منقضی شده است. لطفاً دوباره تلاش نمایید.»

وقتی post_max_size را ۶۴ مگابایت کردیم و upload_max_filesize را روی ۲ گذاشتیم، پیام اسم upload_max_filesize را آورد. با هر دو روی ۶۴ مگابایت (و حافظه ۲۵۶ مگابایت)، بارگذاری و نصب ۸٫۷ ثانیه طول کشید. مستندات وودمارت همین ۶۴ مگابایت را توصیه می‌کند، با حافظه ۲۵۶ مگابایت، زمان اجرای ۱۸۰ ثانیه و max_input_vars برابر ۱۰۰۰۰. اگر هاست سقف را بالا نمی‌برد، همان مستندات آپلود با مدیر فایل هاست و استخراج در پوشه wp-content/themes را راه جایگزین می‌داند. اگر نمی‌خواهید خودتان سراغ این کار بروید، درخواست نصب قالب را ثبت کنید.

نصب دمو با مقدار پیش‌فرض حافظه و زمان اجرای PHP هم کامل شد و فونت‌های قالب را عوض کرد

راه‌انداز اولیه قالب (Setup Wizard) این مراحل را دارد: ساختن قالب فرزند (woodmart-child را ساخت و فعال کرد)، انتخاب صفحه‌ساز (المنتور از پیش انتخاب است و WPBakery و گوتنبرگ کنارش هستند)، نصب افزونه‌های ضروری (وودمارت Core ۷ ثانیه و المنتور ۱۳ ثانیه، در یک بار اجرا) و فهرست ۱۰۰ دمو.

دموی «WoodMart Main» را با مقدارهای پیش‌فرض خود PHP (حافظه ۱۲۸ مگابایت، زمان اجرا ۳۰ ثانیه، ۱۰۰۰ متغیر ورودی) دو بار نصب کردیم: ۷۷٫۹ و ۸۶٫۸ ثانیه. وردپرس هنگام ساختن اندازه‌های تصویر خودش حافظه را تا ۲۵۶ مگابایت بالا می‌برد (تابع wp_raise_memory_limit)، پس ۱۲۸ مگابایت مقدار تنظیم PHP است، نه سقف آن مرحله. مستندات می‌گویند اگر نصب با خطای زمان قطع شد، زمان اجرا را ۳۰۰ ثانیه کنید؛ برای ما لازم نشد. هر بار همان چیزها ماند: ۱۴ برگه، ۱۲ محصول، ۹ نوشته، ۶۸ آیتم فهرست و ۲۸۹ پرونده رسانه. افزونه تازه‌ای نصب نشد و زبان سایت و قالب فعال عوض نشد.

تنظیمات قالب عوض شد. از ۹۵۲ کلید تنظیم بعد از نصب، ۷۲ کلید تازه (پیش‌تنظیم‌های خود دمو) اضافه شد و ۵۵ مقدار تغییر کرد، از جمله هر شش گروه فونت: فونت متن از «System font stack» (۱۴ پیکسل) به Lato (۱۵ پیکسل)، فونت عنوان‌ها به Poppins با وزن ۶۰۰ و فونت سربرگ به Lato با وزن ۷۰۰. قالب این دو فونت را همان لحظه از گوگل روی سایت آزمایشی دانلود کرد (۱۰ فایل) و از آن به بعد از خود سایت می‌دهد. متن‌هایی که دمو می‌آورد انگلیسی بود.

راست‌چین خودکار است، اما علامت پایان جمله در متن انگلیسی اول خط می‌رود

بعد از نصب، هر هفت صفحه‌ای که دیدیم جهت راست‌به‌چپ داشت. قالب در صفحه اصلی ۹۷ شیوه‌نامه بارگذاری کرد که ۲۳ مورد از آن‌ها نسخه راست‌چین (پسوند rtl) بود و برای هیچ‌کدام نسخه چپ‌چین هم بارگذاری نشد؛ قالب نسخه راست‌چین را با تابع is_rtl وردپرس برمی‌گزیند (فایل enqueue.php قالب). بسته قالب ۹۰ شیوه‌نامه راست‌چین دارد. لوگو سمت راست می‌نشیند و سبد خرید کناری از چپ باز می‌شود.

متن انگلیسی داخل این چیدمان علامت پایان جمله‌اش را اول خط می‌برد. تیتر پنجره تبلیغاتی دمو (HEY YOU, SIGN UP AND CONNECT TO WOODMART) علامت تعجبش را اول خط داشت. متن‌های دمو را در صفحه‌ساز به فارسی بنویسید تا این علامت‌ها جای خود را پیدا کنند.

بعد از دمو، فونت متن فارسی را دستگاه بازدیدکننده انتخاب می‌کند

قالب به‌طور پیش‌فرض فونت متن را روی «System font stack» می‌گذارد، فهرستی که با فونت‌های خود سیستم شروع می‌شود. از خود کروم پرسیدیم هر کلمه فارسی صفحه «حساب کاربری» را کدام فونت کشیده (پروتکل DevTools، فرمان CSS.getPlatformFontsForNode). فقط خانه لینوکس در ردیف «قالب با تنظیمات پیش‌فرض» از صفحه اصلی خوانده شد:

وضعیتکروم ۱۵۵ روی ویندوزکرومیوم ۱۵۲ روی لینوکس
قالب با تنظیمات پیش‌فرضSegoe UINoto Sans Arabic
بعد از نصب دموArialNoto Sans Arabic
فونت سفارشی VazirmatnVazirmatnVazirmatn

بعد از دمو، فهرست فونت متن Lato است و بعد Arial و Helvetica و sans-serif. حروف لاتین و رقم‌های همان جمله‌ها را Lato کشید و حروف فارسی را نه؛ ویندوز به Arial رسید و لینوکس ما به Noto Sans Arabic. در تصویر زیر یک صفحه محصول نمونه، با عنوان و توضیحی که خودمان فارسی نوشتیم، در دو حالت است.

دو برش از صفحه محصول نمونه کنار هم: سمت راست بعد از نصب دمو با Arial، سمت چپ با فونت سفارشی Vazirmatn؛ عنوان، توضیح کوتاه و دکمه «افزودن به سبد خرید» فارسی است و «Size Guide»، «Add To Wishlist» و «Compare» انگلیسی می‌مانند

آموزش قالب وودمارت: تغییر فونت به Vazirmatn

فونت سفارشی را این‌طور گذاشتیم (Vazirmatn نسخه ۳۳٫۰۰۳ با مجوز SIL OFL، از گیت‌هاب پروژه؛ فایل‌های woff2 سه وزن Regular، SemiBold و Bold را برداشتیم):

  1. در «Theme settings > Typography > Custom fonts» برای هر وزن با «Add font» یک ردیف بسازید. ما سه ردیف با وزن ۴۰۰، ۶۰۰ و ۷۰۰ و یک نام یکسان («Vazirmatn local») ساختیم؛ مستندات نام یکسان برای ردیف‌های یک فونت را می‌خواهد.
  2. در هر ردیف دکمه Upload جلوی «Font (.woff2)» را بزنید، فایل را از رایانه بفرستید و «Use this file» را بزنید. وردپرس به‌تنهایی نوع woff2 را برای آپلود مجاز نمی‌داند؛ قالب وودمارت آن را به فهرست مجاز اضافه می‌کند و آپلود بی‌خطا انجام شد. «Save options» را بزنید.
  3. در «Typography > Basic» برای شش گروه (Text font، Title font، Entities names font، Secondary font، Widget titles font و Header font) از بخش «Custom fonts» داخل فهرست فونت‌ها همین فونت را انتخاب کنید و دوباره ذخیره کنید.
ردیف اول از سه ردیف صفحه Custom Fonts در تنظیمات قالب: نام «Vazirmatn Local»، وزن ۴۰۰ و فقط فایل Woff2 پر شده است

مستندات وودمارت برای هر ردیف هر دو فایل woff2 و woff را می‌خواهد. ما فقط woff2 گذاشتیم و در هر دو مرورگر هر کلمه فارسی صفحه حساب کاربری با Vazirmatn کشیده شد. کد قالب برای هر ردیف font-face را از هر فایلی که گذاشته باشید می‌سازد (فایل class-themesettingscss.php، خط‌های ۲۴۴ تا ۳۳۱)، پس نبودن woff مشکلی ایجاد نکرد. مرورگر بدون پشتیبانی woff2 را نسنجیدیم. بعد از این تنظیم، در صفحه اصلی دمو ۲۰۴ از ۲۰۹ عنصر متنی نام فونت سفارشی را اول فهرست داشتند، چهار عنصر فونت نماد داشتند و یکی (CAPPELLINI) هنوز Poppins بود؛ علتش را بررسی نکردیم.

قالب بسته فارسی ندارد و فایل ترجمه فقط در چند جا خوانده می‌شود

فهرست ترجمه‌های آماده وودمارت (به‌روزرسانی ۹ مهر ۱۴۰۵، خوانده‌شده در ۲۸ مهر ۱۴۰۵) ۳۷ زبان دارد، از عربی تا ویتنامی، و فارسی در آن نیست. نتیجه را در صفحه تسویه حساب می‌بینید: فرم و پیام‌ها فارسی است، چون بسته زبان فارسی خود ووکامرس نصب بود، اما سربرگ، جستجو، منوها و نوار سه‌مرحله‌ای بالای صفحه انگلیسی ماند. رشته‌های جستجو، ورود و نوار مراحل در woodmart.pot هستند، پس جایشان در فایل ترجمه است؛ نام منوها و متن نوار بالای سربرگ محتوای خود دمو است. فایل woodmart.pot قالب ۶٬۹۲۹ رشته برای ترجمه دارد.

صفحه تسویه حساب دموی وودمارت بعد از فونت سفارشی: فرم «جزئیات صورتحساب» و خلاصه سفارش فارسی است، اما سربرگ، جستجو، منو و نوار «Shopping Cart، Checkout، Order Complete» انگلیسی است

برای زبانی که در فهرست نیست، مستندات وودمارت افزونه Loco Translate را با محل «Custom» پیشنهاد می‌کند که فایل را در wp-content/languages/loco/themes می‌گذارد. ساختن ترجمه را اینجا نیاوردیم؛ فقط محل فایل را آزمودیم. یک فایل با شش رشته قالب، که پنج مورد از آن‌ها در صفحه حساب کاربری بود، در چند محل گذاشتیم و هر بار صفحه حساب کاربری را درخواست کردیم و در متن HTML آن دنبال ترجمه رشته‌ها گشتیم:

محل فایلآن پنج رشته
wp-content/languages/themes/woodmart-fa_IR.moفارسی شد
wp-content/languages/loco/themes/woodmart-fa_IR.mo، با Loco Translate فعالفارسی شد
همان فایل، با Loco Translate غیرفعالانگلیسی ماند
پوشه languages خود قالب، با نام fa_IR.moفارسی شد
پوشه languages خود قالب، با نام woodmart-fa_IR.moانگلیسی ماند

مستندات وودمارت می‌گویند به‌روزرسانی ترجمه‌های آماده فایل‌های wp-content/languages/themes را جایگزین می‌کند، و پوشه languages خود قالب با به‌روزرسانی قالب جایگزین می‌شود؛ فایل سفارشی را در پوشه خود قالب نگذارید و برای ترجمه سفارشی از Loco Translate و محل loco/themes استفاده کنید. افزونه Loco را هم فعال نگه دارید: فایل داخل پوشه Loco بدون فعال بودن آن خوانده نشد.

دمو تصویرها را از دو نشانی می‌گیرد و از یک خروجی ایرانی فقط یکی جواب داد

فایل‌های محتوای دمو داخل قالب است، اما تصویرهایش نه: ۲۸۹ پرونده را افزونه وودمارت Core نسخه ۱٫۱٫۹ از dummy.xtemos.com می‌گیرد. هر دانلود تا سه بار و با مهلت ۵ ثانیه امتحان می‌شود و با اولین تلاش ناموفق، نشانی بقیه تصویرها به woodmart-dummy.b-cdn.net عوض می‌شود (فایل class-import.php افزونه). در هر دو نصب، لاگ خود افزونه تلاش‌های ناموفق را ثبت کرد (۵ و ۶ مورد) و ۲۴۲ و ۲۴۱ درخواست به نشانی دوم و ۵۱ و ۵۳ درخواست به نشانی اول رفت.

از یک خروجی VPN ایرانی، در ۲۸ مهر ۱۴۰۵، ده تصویر مختلف را از هر دو نشانی خواستیم. dummy.xtemos.com هر ده تصویر را در ۱٫۱ تا ۱٫۸ ثانیه داد ولی نشانی دوم هیچ‌کدام را نداد: همه بعد از ۲۰ ثانیه بی‌جواب رها شدند. از رایانه خودمان هر دو نشانی هر ده تصویر را دادند.

برای دیدن اثرش، نشانی دوم را در آزمایش بی‌پاسخ کردیم؛ این شبیه‌سازی است و سنجش از ایران نیست. مقاله نت ملی فرق را نشان داد: بسته‌ای که جواب نمی‌گیرد تا پایان مهلت می‌ماند، ولی اتصال ردشده همان لحظه تمام می‌شود. نصب روی ۳۰ درصد ماند و در هفت دقیقه فقط ۲ پرونده آمد. اگر هر تصویر سه تلاش ۵ ثانیه‌ای (۱۵ ثانیه) بگیرد، ۲۸۹ تصویر حدود ۷۲ دقیقه می‌شود؛ این برآوردی از اعداد کد است، نه نصب تمام‌شده.

یک خط در functions.php قالب فرزند (wp-content/themes/woodmart-child)، که راه‌انداز خودش ساخته بود، عوض‌شدن نشانی را خاموش می‌کند (هوک woodmart_downloader_images_from_cdn در کد افزونه):

PHP
وردپرس نیاز
add_filter( 'woodmart_downloader_images_from_cdn', '__return_false' );

با این خط، حتی وقتی نشانی دوم را بی‌پاسخ کرده بودیم نصب کامل شد (۲۸۹ پرونده، ۲۵۹٫۷ ثانیه). در نصب بدون شبیه‌سازی هم ۲۷۰٫۷ ثانیه طول کشید و همه درخواست‌های تصویر به dummy.xtemos.com رفت. لاگ افزونه در این دو نصب ۲۱ و ۲۲ تلاش ناموفق ثبت کرد و باز هر ۲۸۹ پرونده رسید. پیش از نصب، روی هاست با SSH این دستور را بزنید:

CODE
وردپرس نیاز
bash
for h in dummy.xtemos.com woodmart-dummy.b-cdn.net; do
  curl -sS -o /dev/null -w "$h %{http_code} %{time_total}s\n" --max-time 20 "https://$h/woodmart2/elementor/wp-content/uploads/sites/2/2021/08/wood-logo-dark.svg"
done

اگر برای نشانی دوم ۲۰۰ نگرفتید، خط بالا را اضافه کنید. اگر هاست شما هر دو را می‌بیند، خط را اضافه نکنید: نصب بدون آن ۷۸ و ۸۷ ثانیه بود.

پرسش‌های متداول

چرا آپلود قالب وودمارت پیام «پیوند منقضی شده» می‌دهد؟

در آزمایش ما با post_max_size برابر ۸ مگابایت و فایل ۳۶٫۵ مگابایتی، وردپرس همین پیام را داد و لاگ سرور می‌گفت اندازه درخواست از post_max_size بیشتر است. هر دو تنظیم post_max_size و upload_max_filesize را ۶۴ مگابایت کنید؛ با این مقدارها (و حافظه ۲۵۶ مگابایت) نصب ۸٫۷ ثانیه طول کشید.

برای نصب دموی وودمارت باید محدودیت‌های PHP را بالا ببرم؟

مستندات وودمارت حافظه ۲۵۶ مگابایت و زمان اجرای ۱۸۰ ثانیه را توصیه می‌کند. در آزمایش ما نصب «WoodMart Main» با مقدارهای پیش‌فرض PHP، یعنی حافظه ۱۲۸ مگابایت (که وردپرس هنگام ساختن اندازه‌های تصویر تا ۲۵۶ مگابایت بالا می‌برد)، زمان اجرای ۳۰ ثانیه و ۱۰۰۰ متغیر ورودی دو بار کامل شد: ۷۷٫۹ و ۸۶٫۸ ثانیه.

حروف فارسی وودمارت بعد از نصب دمو با چه فونتی نوشته می‌شود؟

در کروم ۱۵۵ روی ویندوز با Arial و در کرومیوم ۱۵۲ روی لینوکس ما با Noto Sans Arabic؛ دمو فونت متن را Lato و فونت عنوان‌ها را Poppins می‌کند و Lato حروف فارسی را نکشید. با فونت سفارشی Vazirmatn هر دو مرورگر همان فونت را نشان دادند.

وودمارت خودش راست‌چین می‌شود؟

در آزمایش ما با زبان سایت فارسی، هر هفت صفحه جهت راست‌به‌چپ داشت و قالب در صفحه اصلی ۲۳ شیوه‌نامه راست‌چین از ۹۷ شیوه‌نامه را بارگذاری کرد. متن‌های انگلیسی قالب با این کار فارسی نمی‌شوند.

فایل ترجمه فارسی وودمارت را کجا بگذارم؟

مستندات برای ترجمه سفارشی Loco Translate و پوشه wp-content/languages/loco/themes را پیشنهاد می‌کند؛ در آزمایش ما فایل آنجا فقط با افزونه Loco فعال خوانده شد. فایل woodmart-fa_IR.mo در wp-content/languages/themes هم خوانده شد، ولی به گفته مستندات به‌روزرسانی ترجمه‌های آماده فایل‌های آن پوشه را جایگزین می‌کند. در پوشه languages خود قالب فقط نام fa_IR.mo کار کرد و به گفته مستندات آن پوشه با به‌روزرسانی قالب جایگزین می‌شود.

چطور فونت وودمارت را به فونت فارسی تغییر بدهم؟

در آزمایش ما در «Theme settings > Typography > Custom fonts» برای هر وزن یک ردیف با فایل woff2 فونت Vazirmatn ساختیم (وزن‌های ۴۰۰، ۶۰۰ و ۷۰۰ با نام یکسان) و بعد در «Typography > Basic» برای شش گروه فونت همان فونت را انتخاب کردیم. فایل woff2 به‌تنهایی کافی بود.

تصویر سمانه جعفری
سمانه جعفری
پیشنهاد میکنیم این مقالات را هم بخوانید

دیدگاه یا پرسش خود را بنویسید