قالب وردپرس چایلد چیست و چه زمانی به آن نیاز داریم
چایلد تم چیست؟ لایه سفارشیسازیِ بیمهشده، والد آپدیت میشود، تغییرات شما میماند.
بارها دیدهام که صاحب سایت، دو خط CSS برای تغییر رنگ هدر مستقیم در style.css قالب اصلی مینویسد؛ هفته بعد قالب آپدیت میشود و تغییراتش ناپدید می شود.
بعضیها بدتر ، مستقیم فایل functions.php قالب را ویرایش میکنند و با آپدیت، هم کد custom اضافه شده از بین میرود و هم سایت یکروز میخوابد.
قالب چایلد وردپرس دقیقاً برای جلوگیری از همین فاجعه تکراری ساخته شده است. اگر هنوز مفهوم والد/فرزند در قالبها برای شما شفاف نشده، این مقاله هم تئوریاش را کامل میدهد هم عملیاش را.
چایلد تم (Child Theme) چیست؟
چایلد تم قالبی کوچک است که روی یک قالب دیگر بهنام والد (Parent) سوار میشود. ظاهر و توابع والد را به ارث میبرد و فقط همان بخشهایی را که میخواهید بازنویسی یا اضافه میکند. یعنی قالب اصلی دستنخورده میماند، بهروزرسانیهایش آزادانه نصب میشود، و تغییرات شما در لایه فرزند، بین آپدیتها دوام میآورد.
در همان ساختار لایهای قالب وردپرس که قبلاً توضیح دادهام، چایلد تم لایه میانیِ «سفارشیسازی من» است بین قالب خام و افزونهها.
چرا بدون چایلد تم، سفارشیسازی ریسک است؟
چون فایلهای قالب در آپدیت کامل بازنویسی میشوند؛ هر چیزی که در style.css یا functions.php والد خودتان نوشته باشید، در نسخه جدید وجود نخواهد داشت. برای قالبهای پولی که چرخه آپدیت فعالی دارند (مقایسه قالب رایگان/پولی را در تفاوت قالب رایگان و پولی خواندهایم) این خطر جدیتر است.
بدترین حالت را هم دیدهام، ویرایشگرِ قالب پیشخوان، با یک سمیکالن مفقود، کل سایت را سفید میکند؛ رفع خطای Parse error در functions.php را جستجو میکنند تا از همان گودال بیرون بیایند. چایلد تم، هم تغییرات را بیمه میکند و هم دامنه ی خرابی را به فایل خودتان محدود میکند.
قاعدهٔ طلایی وردپرس: چیزی که آپدیت میشود را ویرایش نکن. هر جا وسوسه شدید در فایل قالب دستی ببرید، همانجا چایلد تم لازم دارید.
مکانیزم کاری سیستم (Override)
وقتی وردپرس قالب فعال را لود میکند، برای هر فایل با این منطق عمل میکند: «اول در چایلد تم نگاه کن؛ نبود، از والد بردار». یعنی header.php چایلد، جای نسخه والد استفاده میشود و footer.php که نساختهاید از والد باقی میماند. در سطح توابع هم همین است، تابع قالب والد در functions.php با function_exists() محافظت میشود تا نسخه فرزند بتواند جایگزینش کند، همین الگو در ساختار هسته وردپرس و ساختار فایلهای قالب استاندارد توضیح داده شده است.
ساخت چایلد تم در سه فایل
حداقلِ فایل های لازم برای یک چایلد تم درست، دو فایل میخواهد و نسخه قابلتوصیه من سه فایل. ساختار:
wp-content/themes/my-child/
├── style.css ← هویت چایلد (هدر الزامی)
├── functions.php ← کد و enqueue
└── screenshot.png ← اختیاری، نمایش در پیشخوان
فایل style.css فقط با هدر خودش «چایلد بودن» را اعلام میکند؛ کلیدها Template (پوشه والد) و Text Domain است:
/*
Theme Name: My Site Child
Template: astra
Text Domain: my-site-child
Version: 1.0
*/
و در functions.php، استایل والد را بایگانی کنید، الگوی درست، enqueue پس از والد است نه کپیکردنش:
<?php
function my_site_child_setup() {
wp_enqueue_style(
'my-site-child',
get_stylesheet_uri(),
array( 'astra-theme-css' ), // handle والد
wp_get_theme()->get( 'Version' )
);
}
add_action( 'wp_enqueue_scripts', 'my_site_child_setup', 15 );
این قطعه، همان چیزی است که در افزودن کد سفارشی به وردپرس هم بهعنوان الگوی امن معرفی کردهام، هر کد جدید در لایه خودش، به ترتیب اولویت وارد صف میشود. بعد از آپلود پوشه، از پیشخوان ← نمایش ← پوستهها فعالش کنید. اگر والد را تازه میخرید، نصب قالب و تست قالب را از قبل خوانده باشید.
یک چایلد تم خوب مثل یک پوشش بیمهای نازک است: وزن ندارد، ولی وقتی آپدیت میآید، تفاوت خودش را نشان میدهد.
چه زمانی به چایلد تم نیاز داریم و چه زمانی نه؟
صادقانه بگویم؛ هر سفارشیسازیای به چایلد تم نیاز ندارد:
- نیاز ندارید: اگر فقط با Customizer/تنظیمات قالب رنگ، فونت و چیدمان عوض میکنید، این تنظیمات در دیتابیس ذخیره میشوند و آپدیت آنها را پاک نمیکند.
- نیاز دارید: CSS سفارشی ، تغییر فایل قالب (header/footer)، یا توابع PHP جدید روی قالب، همان مسیر کدنویسی اختصاصی برای قالب که بدون چایلد تم امکان پذیر نیست.
- شاید افزونه بهتر باشد: اگر سفارشیسازی شما «منطق» است نه «ظاهر» (کد کوتاه، ریدایرکت، فیلد)، افزونه/اسنیپت مسیر تمیزتری است؛ مقایسه در افزونه چیست و توسعه با چایلد تم اشاره شده است.
برای تصمیم قالب آماده/اختصاصی هم قالب آماده در برابر اختصاصی و مسیر ساخت اختصاصی در مراحل ساخت قالب اختصاصی راهنما هستند.
اشتباهات رایج
- کپی کردن کل والد در چایلد: چایلد تم جای کپیبرداری نیست؛ فقط فایلهایی را override کنید که لازم دارید. کل کپی = آپدیت والد بیاثر میشود.
- استفاده از
@importقدیمی: الگوی نوین enqueue است؛ import در style.css صف CSS را خراب و LCP را کند میکند. - حذف والد با فعال بودن چایلد: چایلد بدون والد یعنی سایت سفید؛ والد همیشه نصب و فعالِ بالقوه میماند.
- Text Domain اشتباه: در ترجمهها دردسر میسازد — همان اشتباهی که در اشتباهات رایج توسعه مثال زدهام.
دید فنی در مورد چایلد تم
Version چایلد و نگهداریاش در Git (در گیت در وردپرس باز کردهام)؛ assets/css/custom.css داخل چایلد با enqueue مشروط؛ چایلد تم چیست؟ لایه سفارشیسازیِ بیمهشده، والد آپدیت میشود، تغییرات شما میماند.
در سه فایل کوچک ساخته میشود؛ کلیدهای Template و enqueue صحیح را بهیاد بسپارید. قاعدهٔ سرانگشتی: ظاهر = چایلد تم، منطق = افزونه، تنظیمات ساده = Customizer.
اگر تا حالا تغییراتتان با آپدیت قالب سوخته، از تجربهتان بنویسید — و اگر سوالی در ساخت اولین چایلد تم دارید در همین دیدگاه بپرسید؛ در مقالات بعدی همان سوالها را تبدیل به چکلیست میکنم.