قالب فرزند وردپرس یا Child Theme راهی استاندارد برای نگهداری تغییرات ظاهری و کدنویسی در لایهای جدا از قالب اصلی است. وقتی فایلهای قالب والد را مستقیم ویرایش میکنید، بهروزرسانی بعدی میتواند تغییرات شما را بازنویسی کند. قالب فرزند این مسئله را حل میکند: وردپرس ابتدا ساختار قالب والد را در اختیار دارد و سپس فایلها و تنظیمات قالب فرزند را روی آن اعمال میکند.
در این آموزش، ساخت قالب فرزند را از صفر انجام میدهیم، تفاوت فایلهای والد و فرزند را توضیح میدهیم، روش بارگذاری CSS و PHP را بررسی میکنیم و درباره تست، خطاهای رایج و زمانهایی که Child Theme انتخاب مناسبی نیست صحبت میکنیم.
قالب فرزند یک پوسته مستقل اما وابسته به قالب دیگری است. قالب اصلی «والد» نام دارد و امکانات، قالببندی و فایلهای پایه را فراهم میکند. قالب فرزند فقط بخشهایی را نگه میدارد که میخواهید تغییر دهید یا توسعه دهید.
برای نمونه، اگر قصد دارید استایل یک بخش، فایل قالب یک نوشته یا چند تابع اختصاصی را تغییر دهید، لازم نیست تمام فایلهای قالب اصلی را کپی کنید. فقط فایل موردنیاز را در پوشه فرزند قرار میدهید یا کد جدید را از طریق functions.php اضافه میکنید.
بهروزرسانی قالب معمولاً فایلهای بسته اصلی را با نسخه جدید جایگزین میکند. بنابراین تغییر مستقیم style.css، functions.php یا فایلهای template ممکن است از بین برود. علاوه بر این، تشخیص اینکه کدام کد متعلق به سازنده قالب و کدام بخش سفارشی شماست دشوار میشود.
جداکردن تغییرات در Child Theme چند مزیت دارد:
اگر تغییر شما فقط یک گزینه در سفارشیساز، تنظیم رنگ در صفحهساز یا چند خط CSS در بخش «CSS اضافی» است، ساخت قالب فرزند همیشه ضروری نیست. اما برای ویرایش فایلهای قالب، افزودن توابع دائمی وابسته به ظاهر، تغییر ساختار صفحات یا نگهداری مجموعهای از استایلها، Child Theme انتخاب منظمتری است.
اگر قابلیت جدید باید حتی پس از تعویض قالب باقی بماند—برای مثال اتصال به یک سرویس، منطق تجاری یا نوع نوشته سفارشی—بهتر است آن را در افزونه اختصاصی یا افزونه کاربردی قرار دهید، نه در قالب فرزند. معیار اصلی این است: کد مربوط به «نمایش» است یا «عملکرد مستقل سایت»؟
بهتر است این کار ابتدا در یک محیط جدا انجام شود. راهنمای ساخت سایت آزمایشی وردپرس و Staging امن روش آمادهکردن فضای تست را توضیح میدهد.
در مسیر wp-content/themes پوشه قالب فعال را پیدا کنید. مقدار مهم برای قالب فرزند، نام همین پوشه است؛ نه عنوان بازاری یا نامی که در پیشخوان نمایش داده میشود. برای مثال ممکن است عنوان قالب «قالب شرکتی نمونه» باشد اما پوشه آن sample-theme نام داشته باشد.
این نام در هدر فایل style.css قالب فرزند و مقابل فیلد Template قرار میگیرد. اشتباه در این مقدار باعث میشود وردپرس ارتباط میان والد و فرزند را تشخیص ندهد.
داخل wp-content/themes یک پوشه جدید ایجاد کنید. نامی کوتاه، لاتین و قابلتشخیص انتخاب کنید؛ برای مثال:
sample-theme-childاز فاصله، حروف فارسی و نامهای مبهم پرهیز کنید. این پوشه در شروع فقط به دو فایل پایه نیاز دارد: style.css و functions.php.
در پوشه قالب فرزند فایل style.css را بسازید و هدر زیر را متناسب با قالب خود تغییر دهید:
/*
Theme Name: Sample Theme Child
Description: Child theme for Sample Theme
Author: Site Team
Template: sample-theme
Version: 1.0.0
Text Domain: sample-theme-child
*/مقدار Template باید دقیقاً با نام پوشه قالب والد یکسان باشد. کوچک و بزرگ بودن حروف یا خط تیره اضافی میتواند مشکل ایجاد کند. فیلد Theme Name فقط نام نمایشی قالب فرزند است.
فایل functions.php قالب فرزند بهطور خودکار در کنار فایل والد بارگذاری میشود. برخلاف فایلهای template، این فایل جایگزین کامل functions.php والد نیست. بنابراین نباید کل فایل والد را کپی کنید.
اگر قالب والد استایل خود را بهدرستی enqueue نمیکند یا مستندات آن بارگذاری دستی را لازم میداند، میتوانید ساختاری مشابه نمونه زیر داشته باشید:
<?php
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_style(
'parent-theme-style',
get_template_directory_uri() . '/style.css'
);
wp_enqueue_style(
'child-theme-style',
get_stylesheet_uri(),
array( 'parent-theme-style' ),
wp_get_theme()->get( 'Version' )
);
} );این کد را بدون بررسی مستندات قالب کورکورانه اضافه نکنید. بعضی قالبها استایل اصلی را از فایل دیگری بارگذاری میکنند یا از قبل ترتیب والد و فرزند را مدیریت کردهاند. افزودن enqueue تکراری میتواند CSS را دوبار بارگذاری کند.
از پیشخوان وردپرس به بخش نمایش و پوستهها بروید. قالب فرزند باید در فهرست دیده شود. پیش از فعالسازی، وجود قالب والد را کنترل کنید؛ حذف یا غیرفعالبودن فایلهای والد مانع کار قالب فرزند میشود.
پس از فعالسازی، صفحه اصلی، نوشتهها، برگهها، آرشیوها، جستوجو، صفحات خطا و فرمهای مهم را بررسی کنید. اگر سایت فروشگاهی است، سبد خرید، تسویهحساب و حساب کاربری نیز باید آزمایش شوند.
اگر وردپرس برای نمایش یک صفحه به فایلی مانند single.php نیاز داشته باشد و همان فایل در قالب فرزند وجود داشته باشد، نسخه فرزند استفاده میشود. اگر فایل در قالب فرزند نباشد، وردپرس به قالب والد مراجعه میکند.
برای تغییر یک template، فایل اصلی را از والد به فرزند کپی و سپس فقط بخش لازم را ویرایش کنید. اما کپیکردن تعداد زیادی فایل بدون نیاز، نگهداری را دشوار میکند. ممکن است سازنده قالب در نسخه جدید ساختار فایل والد را اصلاح کند و نسخه قدیمی کپیشده در Child Theme همچنان اجرا شود.
در توسعه قالب فرزند، این دو مفهوم مهماند:
get_template_directory_uri() به مسیر قالب والد اشاره میکند.get_stylesheet_directory_uri() به مسیر قالب فعال—یعنی قالب فرزند—اشاره میکند.اگر یک تصویر، اسکریپت یا فایل CSS داخل پوشه فرزند است، باید از مسیر stylesheet استفاده کنید. انتخاب اشتباه باعث میشود وردپرس فایل را در پوشه والد جستوجو کند.
میتوانید استایلهای خود را بعد از هدر اطلاعات در style.css قرار دهید. برای جلوگیری از پیچیدگی، انتخابگرها را دقیق و محدود بنویسید. استفاده گسترده از !important معمولاً نشانه آن است که ترتیب بارگذاری یا specificity بهدرستی بررسی نشده است.
پس از هر تغییر، کش مرورگر و کش سایت را پاک کنید و صفحه را در اندازههای مختلف بررسی کنید. تغییر ظاهری که روی دسکتاپ درست است ممکن است منوی موبایل، فرمها یا فاصلههای نسخه کوچک را خراب کند.
خطای نحوی در functions.php میتواند اجرای سایت یا پیشخوان را متوقف کند. کدها را مرحلهای اضافه کنید، از نامگذاری منحصربهفرد برای توابع استفاده کنید و از تعریف دوباره تابع موجود پرهیز کنید.
برای تغییر رفتارهای موجود، تا حد امکان از action و filter استفاده کنید. حذف یک تابع والد معمولاً نیازمند دانستن hook، اولویت و زمان ثبت آن است. کپیکردن کل منطق والد در فرزند، مسیر بهروزرسانی را پیچیده میکند.
Child Theme تغییرات شما را حفظ میکند، اما به این معنا نیست که پس از هر آپدیت هیچ بررسیای لازم نیست. فایلهای template کپیشده ممکن است با نسخه جدید والد ناسازگار شوند. یادداشت تغییرات قالب، فایلهای بازنویسیشده و هشدارهای سازگاری را مرور کنید.
تعریف مسئولیت این بررسیها در قرارداد پشتیبانی سایت وردپرس و SLA مانع ابهام میان مدیر سایت و تیم فنی میشود.
هدر style.css، محل پوشه و نام فایل را بررسی کنید. فایل باید مستقیماً داخل پوشه قالب فرزند باشد، نه در یک زیرپوشه اضافی.
مقدار Template با نام پوشه والد یکسان نیست یا قالب والد روی سایت نصب نشده است.
ترتیب enqueue، کش، نام handle و آدرس فایل را کنترل کنید. همچنین ممکن است استایل قالب یا صفحهساز specificity بالاتری داشته باشد.
برخی تنظیمات قالب به شناسه پوسته وابستهاند. قبل از فعالسازی روی سایت اصلی، تنظیمات سفارشیساز، ویجتها، منوها و گزینههای اختصاصی قالب را در Staging بررسی کنید.
فایلهای template کپیشده در قالب فرزند را با نسخه جدید والد مقایسه کنید. نگهداری نسخه قدیمی فایل ممکن است با تغییر API یا ساختار HTML والد ناسازگار شده باشد.
تغییرات وابسته به ظاهر—مانند template، استایل، جایگاه نمایش و تنظیمات قالب—در Child Theme منطقیاند. قابلیتهایی که باید با تعویض قالب باقی بمانند بهتر است در افزونه قرار گیرند. فرمهای تجاری، اتصال API، نقش کاربری، نوع نوشته سفارشی و منطق سفارش معمولاً نباید به پوسته گره بخورند.
در یک پروژه حرفهای طراحی سایت، این تفکیک باعث میشود تغییر قالب در آینده، قابلیتهای اصلی کسبوکار را از بین نبرد.
قالب فرزند وردپرس یک پوشه ساده برای انباشتن کد نیست؛ لایهای قابل نگهداری میان سفارشیسازی شما و قالب والد است. با تعریف درست style.css، بارگذاری کنترلشده فایلها، استفاده محدود از templateهای کپیشده و تست در محیط Staging میتوانید تغییرات ظاهری را بدون دستکاری مستقیم قالب اصلی نگه دارید. برای قابلیتهای مستقل از ظاهر نیز افزونه اختصاصی انتخاب پایدارتر خواهد بود.
در این فرم نوع پروژه مد نظرتان را توضیح داده و مرحله به مرحله فر م را تکمیل نمایید