نصب قالب وردپرس: ۳۲ فایل از ۶۰ فایل قالب خطای style.css داد، فایل درست کدام است؟

دو فایل زیپ: بسته کامل با برچسب مستندات و زیپ قرمز کوچک‌تری با برچسب style.css که از آن بیرون آمده، کنار عنوان «نصب قالب وردپرس: ۳۲ فایل از ۶۰ فایل قالب خطای style.css داد، فایل درست کدام است؟»
محصولات زیر برای شماست...
جدیدترین مقالات
دسترسی سریع
فهرست محتوا

برای آزمایش نصب قالب وردپرس، ۶۰ قالبی را که در فروشگاه ما بیشترین دانلود را دارند، همان‌طور که فروشگاه می‌دهد با نصب‌کننده خود وردپرس نصب کردیم (۱۱ آبان ۱۴۰۵، وردپرس ۷٫۱٫۴ فارسی). ۲۷ فایل نصب شد. ۳۲ فایل رد شد، با دو جمله پشت سر هم: «این بسته نمی‌تواند نصب شود» و اینکه قالب فایل style.css را ندارد. یک فایل هم زیپ خراب بود و وردپرس نتوانست آن را باز کند (پیام آن در نصب با خط فرمان وردپرس PCLZIP_ERR_BAD_FORMAT بود).

در هیچ‌کدام از آن ۳۲ فایل قالب کم نبود. فایل دانلودی «بسته کامل» بود: کنار قالب چیزهای دیگری هم بود، مثل مستندات، زیپ افزونه‌ها یا داده‌های نمونه، و خود قالب زیپ جداگانه‌ای داخل آن بود. هر ۴۰ زیپ قالب اصلی که در آن ۳۲ بسته پیدا کردیم نصب شد.

قاعده این است: زیپی را آپلود کنید که با بازکردنش یک پوشه می‌بینید و style.css درست داخل آن پوشه است. اگر به‌جای آن مستندات و چند زیپ دیدید، زیپی را آپلود کنید که اسم قالب را دارد، نه خود بسته را.

هر فایل را با WP-CLI، ابزار خط فرمان وردپرس، و دستور wp theme install نصب کردیم. این دستور همان نصب‌کننده‌ای را اجرا می‌کند که صفحه بارگذاری پوسته اجرا می‌کند. تصویر صفحه‌های نصب را در مرورگر گرفتیم و برای آپلودهای مرورگر دو سقف آپلود PHP، upload_max_filesize و post_max_size، را روی ۶۴ مگابایت گذاشتیم. روی هاست واقعی (cPanel و DirectAdmin) و با نصب‌کننده‌های اختصاصی خود قالب‌ها آزمایش نکردیم.

نصب قالب وردپرس با بسته کامل، خطای style.css می‌دهد

وردپرس زیپ را باز می‌کند. اگر فقط یک پوشه در آن باشد، محتوای همان پوشه را بررسی می‌کند، وگرنه خود محتوای زیپ را، و اگر style.css در آن سطح نباشد، این مرحله نصب را متوقف می‌کند. راهنمای قالب‌نویسی وردپرس هم می‌گوید این فایل برای هر قالب لازم است و باید در پوشه اصلی قالب باشد، نه در زیرپوشه.

بسته کامل The Hanger را همان‌طور که دانلود شده بود در «نمایش > پوسته > افزودن پوسته > بارگذاری پوسته» آپلود کردیم (پیشخوان وردپرس به قالب «پوسته» می‌گوید):

صفحه نصب وردپرس فارسی بعد از بارگذاری بسته کامل قالب The Hanger: پیام «این بسته نمی‌تواند نصب شود»، جمله‌ای درباره نبودن Style.css و «نصب پوسته با خطا مواجه شد»

وردپرس فقط می‌گوید در جایی که نگاه کرد style.css نبود. اینکه زیپ دیگری داخل بسته هست را خودتان باید ببینید.

زیپ قالب در بسته تا سه پوشه پایین‌تر است

بسته‌ها شکل یکسانی نداشتند. جای کم‌عمق‌ترین زیپ قالب در ۳۲ بسته:

زیپ قالب کجاستبستهنمونه
در بالاترین سطح بسته، کنار فایل‌های دیگر۱۱Royal، Brooklyn
یک پوشه پایین‌تر۱۶Pearl، Real Places
دو پوشه پایین‌تر۴The Hanger، XStore
سه پوشه پایین‌تر۱University

نمودار زیر دو فایل را کنار هم می‌گذارد: Astra قالب را مستقیم می‌دهد و در The Hanger قالب دو پوشه پایین‌تر است.

دو چیدمان فایل کنار هم: در Astra ۴٫۱۴٫۲ فایل Style.css درست داخل پوشه Astra است و نصب شد؛ در The Hanger ۱۰٫۹٫۹ زیپ The-Hanger.zip با حجم ۴٫۸ مگابایت دو پوشه پایین‌تر است و نصب نشد

پیش از آپلود:

  1. فایل دانلودی را باز کنید و فقط نگاه کنید.
  2. اگر پوشه‌ای دیدید که style.css درست داخل آن است، همین فایل را آپلود کنید.
  3. اگر مستندات و زیپ دیدید، زیپی را که اسم قالب را دارد از بسته بیرون بیاورید و آپلود کنید. در زیپ‌های داخل این ۳۲ بسته، اسم همه زیپ‌های قالب فرزند child داشت و اسم هیچ‌کدام از زیپ‌های قالب اصلی نداشت.

سه بسته چند زیپ قالب دارند: Phlox Pro، Hostiko و Archi. در Hostiko و Archi نام پوشه‌ها صفحه‌ساز را می‌گوید (Elementor، WPBakery، گوتنبرگ) و Archi یک نسخه RTL هم دارد؛ کدام نسخه برای سایت شما درست است را در مستندات سازنده بخوانید.

زیپ قالب از خود بسته کوچک‌تر است: در ۲۹ بسته‌ای که فقط یک زیپ قالب دارند، میانه حجم دانلود ۸۶٫۳ مگابایت است و میانه حجم زیپ قالب ۱۵٫۰ مگابایت (مگابایت: ۱٬۰۴۸٬۵۷۶ بایت، واحد خود PHP).

سقف‌های پیش‌فرض PHP بیشتر این فایل‌ها را رد می‌کنند

PHP به‌طور پیش‌فرض فایل آپلودی بزرگ‌تر از ۲ مگابایت (upload_max_filesize) و درخواستی بزرگ‌تر از ۸ مگابایت (post_max_size) را نمی‌پذیرد، و راهنمای PHP همین دو پیش‌فرض را می‌نویسد. از ۶۰ فایل، ۵۷ فایل از ۲ مگابایت و ۴۷ فایل از ۸ مگابایت بزرگ‌ترند، و کوچک‌ترین زیپ قالب هم در ۳۱ بسته از ۳۲ بسته از ۲ مگابایت و در ۲۲ بسته از ۸ مگابایت بزرگ‌تر است؛ پس با سقف‌های پیش‌فرض بیرون آوردن زیپ قالب از بسته کافی نیست. درخواست بزرگ‌تر از ۸ مگابایت پیام «پیوندی که شما دنبال می‌کردید منقضی شده است» را می‌دهد، و فایلی که فقط از ۲ مگابایت بزرگ‌تر باشد پیامی می‌دهد که اسم upload_max_filesize در آن است. هر دو با اندازه‌هایشان در آزمایش قالب وودمارت آمده، همراه با راه دیگری که مستندات وودمارت می‌گوید: آپلود با مدیر فایل هاست و استخراج در پوشه قالب‌ها. مقدار این دو سقف روی هاست خودتان را از میزبانتان بپرسید.

زیپ قالب فرزند را اول آپلود نکنید

در ۲۴ بسته زیپ قالب فرزند هم هست، جمعا ۲۶ زیپ. قالب فرزند بدون قالب مادر خود کار نمی‌کند، اما وردپرس نصب آن را رد نمی‌کند. هر ۲۶ زیپ قالب فرزندی که در بسته‌ها بود نصب شد. در ۲۳ مورد وردپرس گفت قالب مادر پیدا نشد؛ در آزمایش The Hanger پیوند «فعال کردن» نبود و فقط پیوند بازگشت به صفحه پوسته‌ها ماند.

در سه مورد وردپرس کار دیگری کرد. نام پوشه مادر را که در سربرگ قالب فرزند آمده در WordPress.org جست‌وجو می‌کند. برای این سه قالب آنجا قالبی با همان نام بود، و وردپرس آن را دانلود کرد و به‌جای قالب فروشگاه مادر حساب کرد:

قالب مادر در فروشگاهآنچه وردپرس از WordPress.org نصب کرد
Royal ۶٫۵٫۲Royal ۱٫۱٫۹ از N. Venkat Raj
University ۲٫۱٫۵University ۱٫۳ از Viva Themes
Composer ۳٫۵٫۴Composer ۰٫۱٫۶ از Han، و بعد Omega ۱٫۳٫۰ که مادر همین Composer است

صفحه نصب زیپ فرزند Royal این است، وقتی قالب مادر نصب نبود:

صفحه نصب وردپرس فارسی برای زیپ قالب فرزند Royal: پیام نیاز به قالب مادر، دانلود Royal 1.1.9 از Downloads.wordpress.org و نصب آن به‌عنوان قالب مادر

پوشه‌ای که وردپرس برای Royal ساخت همان پوشه‌ای است که زیپ قالب مادر فروشگاه هم می‌خواهد، پس آپلود آن زیپ به صفحه «از قبل موجود» می‌رسد. پس اول قالب مادر را آپلود کنید و بعد قالب فرزند را.

بارگذاری دوباره قالب، پوشه قبلی را پاک می‌کند

وقتی پوشه قالب از قبل هست، وردپرس چیزی نصب نمی‌کند و جدول نسخه، نویسنده و حداقل نسخه وردپرس و PHP را کنار هم می‌گذارد. در آزمایش Royal همین جدول مشکل بخش قبل را نشان داد: نصب‌شده Royal ۱٫۱٫۹ از N. Venkat Raj و بارگذاری‌شده Royal ۶٫۵٫۲ از 8theme.

صفحه «این پوسته پیش از این نصب شده است» با جدول مقایسه: نصب‌شده Royal 1.1.9 از N. Venkat Raj و بارگذاری‌شده Royal 6.5.2 از 8Theme، با دکمه‌های جایگزینی و لغو

دکمه «بارگذاری شده را جایگزین فعلی نمایید» پوشه قبلی را پاک می‌کند و نسخه تازه را به‌جای آن می‌گذارد. در آزمایشی جدا Saasland را که از قبل (با WP-CLI) نصب بود دوباره از صفحه بارگذاری آپلود کردیم و پیش از آن فایلی داخل پوشه قالب گذاشتیم؛ بعد از جایگزینی فایل نبود (پوشه از ۳۷ ورودی به ۳۶ رسید) و صفحه از پاک شدن نسخه قدیمی خبر داد. در آزمایش Loco Translate الگوی ترجمه‌ای که داخل پوشه قالب بود هم با همین جایگزینی رفت، و برای افزونه‌ها همین صفحه را در آپدیت دستی افزونه با زیپ دیده بودیم. پیش از دکمه جایگزینی از پوشه قالب بکاپ بگیرید؛ خود صفحه هم همین را می‌گوید.

فایل بدون پوشه در ۷٫۱٫۴ با نامی تصادفی نصب می‌شود

در یکی از ۶۰ فایل، TheFox، فایل‌های قالب بدون هیچ پوشه‌ای در ریشه زیپ بود. دو زیپ داخل بسته‌ها هم همین‌طور بودند: veda.zip در بسته Veda و noor-child.zip در بسته Noor. در وردپرس ۷٫۱٫۴ این زیپ‌ها نصب می‌شوند، اما پوشه قالب از نام خود فایل ساخته می‌شود و ۱۶ نویسه تصادفی هم به آن می‌چسبد. نام فایل TheFox در فضای ذخیره فروشگاه با یک عدد شروع می‌شود و آن عدد هم در پوشه آمد:

CODE
وردپرس نیاز
1779389582-thefox-responsive-multi-purpose-wordpress-theme-3.9.79-a8N6aayknXOVc2Gx

برای آزمایش یک قالب فرزند با دو سطر سربرگ نوشتیم که قالب مادرش thefox است. وردپرس گفت باید قالبی به نام thefox نصب شود، چون پوشه‌ای با این نام نبود. اگر زیپی فایل‌های قالب را بدون پوشه دارد، آن‌ها را داخل پوشه‌ای به نام قالب بگذارید و دوباره زیپ کنید: وقتی همین کار را با TheFox کردیم، پوشه thefox ساخته شد.

صفحه «اطلاعات اتصال» یعنی وردپرس نتوانست خودش فایل بنویسد

در نصب آزمایشی ما، پوشه wp-content و پوشه قالب‌ها را برای کاربر وب‌سرور غیرقابل نوشتن کردیم. وردپرس به‌جای نصب، صفحه‌ای با نام میزبان، شناسه FTP و رمز FTP نشان داد:

صفحه «اطلاعات اتصال» وردپرس فارسی با فیلدهای نام میزبان، شناسه Ftp و رمز Ftp که به‌جای نصب قالب نشان داده شد

با برگرداندن مالک پوشه‌ها به کاربر وب‌سرور، این صفحه در آزمایش ما از بین رفت. روی هاست شما علت می‌تواند چیز دیگری باشد، مثل ثابت FS_METHOD در wp-config.php، پس به خود صفحه نگاه کنید: اگر اطلاعات FTP ندارید، صفحه می‌گوید با میزبان تماس بگیرید. اگر به هاست دسترسی ندارید یا نمی‌خواهید خودتان زیپ‌ها را باز کنید، درخواست نصب قالب را ثبت کنید؛ خدمات ما «نصب قالب و راه‌اندازی افزونه» را دارد.

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

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

وردپرس در سطحی که زیپ را باز کرد، فایل style.css را پیدا نکرده است. در ۳۲ فایل از ۶۰ فایل قالب فروشگاه ما علت این بود که فایل دانلودی بسته کامل بود و زیپ خود قالب داخل آن؛ همان زیپ داخل بسته را آپلود کنید.

زیپ درست قالب در بسته دانلودی کدام است؟

زیپی که اسم قالب را دارد، نه زیپ افزونه‌ها یا داده‌های نمونه که در بعضی بسته‌ها هست؛ با بازکردنش پوشه‌ای می‌بینید که style.css درست داخل آن است. در زیپ‌های داخل این ۳۲ بسته، اسم همه زیپ‌های قالب فرزند child داشت و اسم هیچ‌کدام از زیپ‌های قالب اصلی نداشت.

اگر زیپ قالب فرزند را قبل از قالب مادر آپلود کنم چه می‌شود؟

وردپرس قالب فرزند را نصب می‌کند، قالب مادر را پیدا نمی‌کند و در آزمایش ما گزینه فعال کردن را نشان نداد. اگر در WordPress.org قالبی با نام پوشه مادر باشد، وردپرس همان را نصب می‌کند؛ این برای ۳ زیپ فرزند از ۲۶ زیپ پیش آمد.

بارگذاری دوباره قالبی که نصب است چه چیزی را پاک می‌کند؟

دکمه «بارگذاری شده را جایگزین فعلی نمایید» پوشه قبلی را پاک می‌کند و نسخه تازه را به‌جای آن می‌گذارد. در آزمایش ما فایلی که خودمان داخل پوشه قالب گذاشته بودیم بعد از جایگزینی نبود.

صفحه «اطلاعات اتصال» با فیلدهای FTP هنگام نصب قالب یعنی چه؟

وردپرس نتوانسته خودش در پوشه قالب‌ها فایل بنویسد و اطلاعات FTP می‌خواهد. در آزمایش ما با غیرقابل نوشتن کردن پوشه‌ها برای کاربر وب‌سرور همین صفحه آمد؛ اگر اطلاعات FTP ندارید، صفحه می‌گوید با میزبان تماس بگیرید.

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

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