Faragiri
فارسی

زبان را انتخاب کنید ۲

همهٔ زبان‌ها

آموزش وردپرس و طراحی سایت سیستم مدیریت محتوا · قالب وردپرس، افزونه وردپرس، REST API وردپرس و ۲ مورد دیگر

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

۵شاخه
۵زیرمجموعه
۴عمق

چهار لایه، یک پرسش

هر کاری مال کدام لایه است

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

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

این لایه‌ها ترتیب وابستگی را می‌گویند و نه ترتیب اجرا. اجرا از هوک می‌گذرد و همان است که اجازه می‌دهد یک افزونه رفتار هسته را عوض کند بی‌آنکه فایلی از آن دست بخورد.

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

چیزی که این چهار لایه را به هم وصل می‌کند سیستم هوک است، و اندازه‌اش را می‌شود شمرد. روی همین نصب، با وردپرس 7.1 و سیزده افزونه فعال، در تاریخ ۲۰۲۶-۰۹-۰۳:

  • ۸۹۸ نام هوک ثبت شده است
  • روی هم ۱۹۲۳ کال‌بک به آن‌ها بسته شده
  • فقط روی فیلتر محتوا ۱۴ کال‌بک نشسته است

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

قاعده‌ای که همه چیز از آن می‌آید

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

جای تغییر ظاهر، قالب فرزند است و جای تغییر رفتار، یک افزونه کوچک خودتان؛ همان مرزی که جایی که کس دیگری کلمه‌ها را می‌نویسد در سطح بالاتر می‌کشد. هر دو با همان سیستم هوک کار می‌کنند و هر دو از به‌روزرسانی جان سالم به در می‌برند. مرزش هم ساده است: اگر با عوض شدن قالب باید همچنان کار کند، افزونه است.

محتوا، فراداده، و تنظیمات

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

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

جایی که کار گیر می‌کند، هاست اشتراکی و افزونه‌های زیاد است

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

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

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

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

درون این، ۵

بالای این