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

چرخهٔ اجرای یک درخواست

هر درخواست به یک سایت وردپرسی، از لحظهٔ ورود تا خروجی، هفت گام را طی می‌کند: یک — وب‌سرور (Apache/Nginx) درخواست را می‌گیرد و به index.php هدایت می‌کند. دو — فایل wp-load.php لود می‌شود که به wp-config.php و هسته وصل می‌شود. سه — هسته با فراخوانی wp-settings.php لود می‌شود: توابع پایه، کتابخانه‌ها، و کلاس‌های پایه. چهار — افزونه‌ها لود می‌شوند و هوک‌هایشان ثبت می‌شود. پنج — قالب فعال لود می‌شود. شش — درخواست تحلیل و به query تبدیل می‌شود (WP_Query). هفت — پاسخ تولید و به کاربر برگردانده می‌شود. شناخت این هفت گام، تفاوت بین حدس و تشخیص است. تفصیل هر گام در منابع رسمی وردپرس موجود است، ولی چکیدهٔ کاربردی همین‌جاست.

هستهٔ وردپرس، یک ماشین رویدادمحور است؛ همه‌چیز حول «چه زمانی چه اتفاقی بیفتد» می‌چرخد.

ساختار پوشه‌ها و فایل‌ها

ساختار ریشهٔ وردپرس، سه پوشه و چند فایل کلیدی دارد:

wordpress/
├── wp-admin/         # پیشخوان و کل کد مدیریتی
├── wp-content/       # محتوا: قالب‌ها، افزونه‌ها، آپلودها
├── wp-includes/      # هستهٔ اصلی وردپرس
├── index.php         # نقطهٔ ورود اصلی
├── wp-config.php     # تنظیمات پایه
├── wp-load.php       # بوت‌استرپ هسته
├── wp-settings.php   # راه‌اندازی هسته
└── wp-login.php      # صفحهٔ ورود

سه نکته: یک — wp-includes را هرگز دست نزنید؛ هستهٔ وردپرس است و آپدیت آن را می‌شوید. دو — wp-content خانهٔ شماست: قالب‌ها، افزونه‌ها، آپلودها. سه — wp-config.php فایل حساس است؛ حاوی اطلاعات دیتابیس و کلیدهای امنیتی. مسیر درست ساختار قالب و افزونه در ساختار فایل‌های قالب استاندارد و ساختار فایل‌های افزونه استاندارد.

فایل‌های کلیدی: wp-config و wp-load

wp-config.php چهار وظیفهٔ اصلی دارد: اتصال دیتابیس، کلیدهای امنیتی (salt)، تعریف پیشوند جدول‌ها، و تنظیمات محیطی (WP_DEBUG و…). تجربه‌ام: بخش قابل‌توجهی از پروژه‌ها، تنظیمات این فایل را جدی نمی‌گیرند و بعداً با مشکل روبرو می‌شوند. مثال: پیشوند جدول‌ها را از wp_ به چیز دیگری تغییر ندادن، سطح حملهٔ SQL Injection را بالا می‌برد. راهنمای امن‌سازی این فایل در امن‌سازی wp-config. فایل wp-load.php کوچک است ولی نقش بزرگی دارد: نقطهٔ ورود به هستهٔ وردپرس. بعضی از افزونه‌ها یا اسکریپت‌های بیرونی، با include این فایل، به APIهای وردپرس دسترسی پیدا می‌کنند — الگویی که باید با احتیاط استفاده شود.

هوک‌ها: لایهٔ اتصال

هوک‌ها مکانیزم رسمی وردپرس برای اتصال بدون دست‌کاری هسته‌اند. دو نوع: Action (اجرای کاری در لحظهٔ خاص) و Filter (تغییر داده‌ها در لحظهٔ خاص). شناخت هوک‌ها، اولین پیش‌نیاز توسعهٔ وردپرس است. در چرخهٔ اجرا، هوک‌ها در چند نقطهٔ کلیدی صدا زده می‌شوند: muplugins_loaded، plugins_loaded، init، wp_loaded، template_redirect. راهنمای کامل در هوک‌های وردپرس و استفادهٔ درست از هوک‌ها. تفکیک اکشن از فیلتر در تفاوت اکشن و فیلتر و مدیریت ترتیب اجرا در کنترل ترتیب اجرای هوک‌ها.

لایهٔ دیتابیس: wpdb و schema

وردپرس از کلاس wpdb برای ارتباط با دیتابیس استفاده می‌کند. دوازده جدول پیش‌فرض دارد که مهم‌ترینشان: wp_posts (نوشته‌ها و برگه‌ها)، wp_postmeta (متادیتای نوشته)، wp_options (تنظیمات)، wp_users و wp_usermeta، wp_terms و wp_term_relationships برای طبقه‌بندی. تجربه‌ام: درک این جدول‌ها و روابطشان، پیش‌نیاز عیب‌یابی درست است. بیشتر کوئری‌های کند، از نشناختن همین روابط می‌آید. راهنمای کوئری سفارشی در توابع وردپرس برای کوئری سفارشی و بهینه‌سازی در بهینه‌سازی کوئری‌های وردپرس. کار مستقیم با wpdb فقط در مواردی که توابع آماده جواب نمی‌دهند توصیه می‌شود و همیشه با آماده‌سازی و پاک‌سازی ورودی.

لایهٔ قالب: template hierarchy

یکی از زیباترین بخش‌های معماری وردپرس، template hierarchy است: وردپرس برای هر نوع درخواست، فهرست اولویتی از فایل‌های قالب دارد و اولین فایل موجود را استفاده می‌کند. مثال: برای یک تک‌نوشته، ترتیب single-post-{slug}.php، single-post.php، single.php، singular.php، index.php است. شناخت این سلسله‌مراتب، تفاوت بین ویرایش درست و کپی‌برداریِ اضافه است. راهنمای تفصیلی در ساختار فایل‌های قالب استاندارد و قالب وردپرس چیست.

لایهٔ پیشخوان

پیشخوان وردپرس (wp-admin) یک اپلیکیشن PHP است که از همان هوک‌ها و APIها استفاده می‌کند، ولی با نقاط اتصال مخصوص خودش: admin_init، admin_menu، admin_enqueue_scripts. اگر افزونه‌ای بنویسید که روی پیشخوان اثر می‌گذارد، این سه هوک، نقطهٔ شروع شماست. تجربه‌ام: تعارض‌های پیشخوان، بیشتر از front-end رخ می‌دهند؛ چون در پیشخوان، اسکریپت‌ها و استایل‌های چند افزونه هم‌زمان در صف قرار می‌گیرند. راهنمای تعارض در شناسایی افزونهٔ مشکل‌ساز.

REST API و شبکه

از وردپرس ۴.۷ به بعد، REST API بخشی از هسته شده. این API اجازه می‌دهد محتوای سایت از طریق HTTP به اپلیکیشن‌های بیرونی یا فرانت‌اند مدرن (React، Vue) سرو شود. مسیر /wp-json/ نقطهٔ ورود است. توسعهٔ Headless، بر همین لایه سوار می‌شود. راهنمای کامل در REST API در وردپرس و استفاده از REST API. یک نکتهٔ امنیتی: REST API به‌طور پیش‌فرض بعضی اطلاعات را عمومی می‌کند؛ اگر سایت شما نیاز به محدودسازی دارد، سیاست‌های دسترسی را تنظیم کنید. مسیر عمومی امنیت در امنیت وردپرس برای مبتدیان.

دید مهندسی: چرخهٔ درخواست در سطح عمیق

برای توسعه‌دهنده‌های سطح بالا، لایهٔ نهایی فهم هسته، در تحلیل «چرخهٔ درخواست در سطح OPcache و رمزگذاری» است. هستهٔ وردپرس، در هر درخواست، حدود ۳ مگابایت کد PHP را در حافظه لود و اجرا می‌کند. این مقدار، بدون OPcache، فشار قابل‌توجهی روی CPU است. با OPcache فعال، کد کامپایل‌شده در حافظه می‌ماند و زمان بارگذاری به‌شدت کم می‌شود. شناخت این لایه، تفاوت بین توسعه‌دهندهٔ ماهر و توسعه‌دهندهٔ حرفه‌ای است. در پروژه‌های بزرگ، سه بهینه‌سازی سطح عمیق را اجرا می‌کنم: یک — فعال‌سازی OPcache روی سرور. دو — پیکربندی درست object cache (Redis یا Memcached) برای کاهش کوئری‌های تکراری. سه — بررسی سربار افزونه‌ها با ابزارهایی مثل Query Monitor و حذف بارِ نامرئی. تجربه‌ام: در بعضی سایت‌های بزرگ، همین سه اقدام، TTFB را به نصف رسانده — بدون تغییر قالب یا افزونه. راهنمای بهینه‌سازی در افزایش سرعت وردپرس و تحلیل گلوگاه در تأثیر TTFB بر سرعت و تأثیر هاست بر سرعت سایت.

یک نکتهٔ تکمیلی برای توسعه‌دهندگان سطوح بالاتر: درک تفاوت بین in-memory caching (Redis/Memcached) و page caching (Varnish/LiteSpeed Cache) در حل مسائل عملکردی حیاتی است. اولی برای دیتابیس، دومی برای HTML. استفاده از یکی به‌جای دیگری، حجم درد و اشتباهات را بالا می‌برد. و در سطح پایین‌تر، درک نحوهٔ کار preloading و coalescing فایل‌ها در مرورگر، معیار نهایی بهینه‌سازی است.

جمع‌بندی

ساختار هستهٔ وردپرس، هفت لایهٔ عملیاتی دارد: چرخهٔ درخواست، ساختار پوشه‌ها، فایل‌های بوت، هوک‌ها، لایهٔ دیتابیس، template hierarchy، و REST API. اگر امروز فقط یک کار می‌کنید: یکی از افزونه‌های فعلی سایت خودتان را باز کنید و ببینید در کدام لایه کار می‌کند — این تمرین، درک شما از هسته را از تئوری به عمل می‌برد. تجربهٔ خودتان از مواجهه با معماری هسته، در دیدگاه‌ها ارزشمند است؛ حتی یک باگ عجیب که در نهایت به فهم عمیق‌تر منجر شد. 🧬