Faragiri

همهٔ زبان‌ها

آموزش قالب وردپرس وردپرس

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

۴بخش
۳دقیقه خواندن
۵عمق

یک درخواست، پنج ایستگاه

ترتیبی که وردپرس دنبال فایل قالب می‌گردد

هر ایستگاه فقط وقتی بررسی می‌شود که ایستگاه پیشین در پوشه قالب پیدا نشده باشد.

  1. نام کامل با اسلاگخاص‌ترین حالت، برای دقیقا همان یک نوشته
  2. نام با نوع محتوابرای همه نوشته‌های آن نوع، و پرکاربردترین سفارشی‌سازی
  3. تک‌نوشتههر نوشته‌ای، از هر نوعی
  4. تک‌محتوانوشته و برگه و پیوست، همه با یک فایل
  5. فایل پیش‌فرضتنها فایلی که یک قالب واقعا لازم دارد

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

در یک قالب وردپرس هیچ جدول مسیری وجود ندارد. وردپرس بر اساس آنچه درخواست شده یک فهرست مرتب از نام فایل می‌سازد و اولین فایلی را که در پوشه قالب پیدا کند اجرا می‌کند.

برای یک نوشته از یک نوع محتوای سفارشی، فهرست از خاص به عام این‌طور است:

  • single-{post_type}-{slug}.php برای دقیقا همان یک نوشته
  • single-{post_type}.php برای همه نوشته‌های آن نوع
  • single.php برای هر نوشته‌ای
  • singular.php برای هر چیزی که یک تک‌محتواست
  • index.php که تنها فایلی است که یک قالب واقعا لازم دارد

همین الگو برای بایگانی و برگه هم هست، با نام‌های خودشان. یعنی برای سفارشی کردن نمایش یک نوع محتوا، هیچ کدی برای مسیریابی نمی‌نویسید؛ یک فایل با نام درست می‌سازید و کار تمام است.

قالب فرزند، و تنها دلیل وجودش

قالب فرزند برای این است که تغییرهای شما با به‌روزرسانی قالب اصلی از بین نروند. هر فایلی که در فرزند بگذارید، جای همان فایل در والد را می‌گیرد، و فایل‌هایی که نگذاشته‌اید از والد می‌آیند.

یک استثنا هست که همه را یک بار گیر می‌اندازد: فایل توابع فرزند جای فایل والد را نمی‌گیرد، هر دو اجرا می‌شوند و فرزند اول. یعنی برای برداشتن رفتاری که والد اضافه کرده باید هوکش را جدا کنید و نه اینکه فایل را بازنویسی کنید. سازوکارش همان سیستم هوک است که در چیزی که سهم بزرگی از وب را می‌گرداند شمرده شد.

حلقه، و کاری که واقعا می‌کند

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

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

جایی که کار گیر می‌کند، قالب راست‌به‌چپ و قلم فارسی است

بیشتر قالب‌هایی که در ایران استفاده می‌شوند برای زبان چپ‌به‌راست ساخته و بعد راست‌به‌چپ شده‌اند. دو مسئله همیشه می‌ماند. اول، خود وردپرس فایل سبک راست‌به‌چپ را خودکار بارگذاری می‌کند اگر با نام درست کنارش باشد، و بیشتر قالب‌ها این را نمی‌دانند و به‌جایش قاعده‌های جهت‌دار را داخل فایل اصلی می‌نویسند. دوم، قلم: قالب معمولا یک قلم لاتین را از یک سرویس بیرونی می‌گیرد، که هم فارسی را پوشش نمی‌دهد و هم از ایران کند بارگذاری می‌شود. جواب هر دو یکی است: قلم فارسی را کنار خود قالب میزبانی کنید و سرویس بیرونی را کامل بردارید.

ابزار، و سالی که این حرف درست است

در سال ۲۰۲۶، افزونه‌های نمایش سلسله‌مراتب قالب، نام دقیق فایلی که وردپرس برای صفحه فعلی انتخاب کرده را در نوار مدیریت نشان می‌دهند و رایگان‌اند؛ جای حدس زدن از روی جدول سلسله‌مراتب را گرفته‌اند. برای ساختن قالب فرزند، خود WP-CLI دستورش را دارد و ساختار درست را می‌سازد. ویرایشگر بلوکی هم مسیر دیگری برای قالب باز کرده که در آن بخش زیادی از این فایل‌ها با فایل‌های الگو جایگزین می‌شوند، و هر دو مسیر در نسخه امروزی پشتیبانی می‌شوند.

پرسش بعدی این است که وقتی رفتاری لازم شد که به ظاهر ربطی ندارد، کجا باید نوشته شود، که هوک، فیلتر، و نوشتن افزونه خودتان است. و همان زبان زیر این فایل‌ها در نحو، درخواست، و شکل یک اسکریپت است.

کنار این

بالای این