روش ساخت چایلد تم یا پوسته فرزند در وردپرس
با کمک ساخت چایلد تم در وردپرس میتوانید تغییرات مدنظر خود را بدون نگرانی از دست رفتن آن به وبسایت خود اعمال کنید. در پوسته فرزند یا چایلد تم ابزاری قدرتمند برای توسعهدهندگان و مالکین وبسایت است که به آنها اجازه تغییرات مستقیم روی پوسته را میدهد.
بعد از ساخت چایلد تم در وردپرس، استایلها و کارکرد قالب والد به ارث برده خواهد شد و تغییرات روی پوسته بدون دستکاری قالب والد رخ خواهد داد.
جاوا اسکریپت در وردپرس: چگونه جاوا اسکریپت را به وردپرس اضافه کنیم؟
به عبارت دیگر بعد از ساخت چایلد تم در وردپرس و فعال کردن آن، کدهای پوسته فرزند به وردپرس میگویند این پوسته، یک پوسته فرزند است و قالب والد هم وجود دارد. برای اینکار قالب والد بر روی وردپرس و میزبان شما باقی خواهد ماند اما فعال نخواهد شد.
در این آموزش، روش ساخت چایلد تم در وردپرس را آموزش خواهیم داد. همچنین یک سری نکته به شما خواهیم گفت که پوستههای فرزند و والد به چه صورتی کار میکنند.
روش ساخت چایلد تم در وردپرس
اولین کاری که بایستی انجام دهید این است که پوسته فرزند را در پوشه wp-content/themes ایجاد کنید. پوسته فرزند بایستی دو فایل داشته باشد تا کار کند: یکی stylesheet و دیگری فایل functions. میتوانید فایلهای دیگری را هم بدان ها اضافه کنید مانند فایلهای الگو و …
برای قالب فرزند خود پوشهای در پوشه قالبها ایجاد کنید و نام مناسبی هم انتخاب کنید؛ مثلا wproket-child-theme.
در داخل این پوشه فایل استایل با نام style.css را ایجاد کنید. در ابتدای این فایل استایل کد زیر را وارد کنید.
Theme Name: wproket Child Theme. Child for wproket.
Theme URI: https://wproket.ir/smtelse/wproket-child-theme
Description: Theme to support wproket tutorial. Child theme for the wproket theme.
Author: Reza Masoumpour
Textdomain: wproket
Author URI: https://wproket.ir/
Template: wproket
Version: 1.0
این کد به وردپرس اطلاعات مشابهی مانند هر قالب دیگر ارایه میکند؛ تنها با یک تفاوت: Template: wproket که به وردپرس میگوید که این قالب، یک قالب فرزند برای wproket است.
میتوانید از هر قالبی به عنوان قالب والد تنها با استفاده از نام پوشهای که ذخیره شده استفاده کنید. از عنوان قالب استفاده نکنید؛ از نام پوشه استفاده کنید.
حالا فایل استایل را ذخیره کرده و فایل دیگری به نام functions.php در پوسته فرزند ایجاد کنید.
در این فایل، بایستی فایل استایل را از قالب والد وارد صف کنید. پیشتر برای اینکار از import@ استفاده میکردید که دیگر روش خوبی محسوب نمیشود. در عوض میتوانید در فایل functions خود این کد را وارد کنید:
<?php
/* enqueue script for parent theme stylesheet */
function wproket_parent_styles() {
// enqueue style
wp_enqueue_style( 'parent', get_template_directory_uri().'/style.css' );
}
add_action( 'wp_enqueue_scripts', 'wproket_parent_styles');
این روش به شکل درستی فایل استایل را از قالب والد وارد صف میکند و برای یافتن قالب مدنظر از ()get_template_directory_uri استفاده کنید (پوشه قالب، پوشهای است که قالب والد در آن ذخیره شده است، در حالیکه پوشه استایل پوشهای است که قالب جاری در آن ذخیره شده است).
اگر که میخواهید هر استایلی را به قالب فرزندتان اضافه کنید تا استایل را در قالب والد بازنویسی کند، به استایل قالب فرزند خود رفته و موارد مدنظر خود را بدان بیافزایید. این کدها را به فایل functions اضافه نکنید و تلاش نکنید تا فایلهای استایل بیشتری را وارد صف کنید.
همچنین میتوانید توابعی را به فایل functions قالب فرزند و فایلهای الگوی موجود در پوشه قالب اضافه کنید که همان فایلهای الگو در قالب والد را بازنویسی میکنند.
ساخت فایل قالب
در ادامه مسیر ساخت چایلد تم در وردپرس، حالا به فایلهای قالب نگاهی بیاندازید. وردپرس از کدام فایل قالب برای نمایش صفحهای در سایت شما استفاده میکند؟ این مساله به دو مورد بستگی دارد: ساختار قالب و فایلهایی که به قالب فرزندتان افزودهاید.
تصور کنید که در حال بازدید از صفحه بایگانی دستهبندی مسافرت از وبسایتتان هستید. همانطور که میدانید وردپرس از ساختار قالب برای یافتن مرتبطترین فایل استفاده میکند:
- فایل الگوی بایگانی دستهبندی برای دستهبندی مشخصی با استفاده از نامک: category-travel.php
- فایل الگوی بایگانی دستهبندی برای دستهبندی مشخصی با استفاده از شناسه: category-23.php
- فایل کلی بایگانی دستهبندی: category.php
- فایل بایگانی کلی: archive.php
- فایل اصلی: index.php
وردپرس به دنبال این فایلها در قالب والد و بعداز ساخت چایلد تم در قالب فرزند خواهد گشت و از اولین فایل در این سلسله مراتب استفاده میکند که آیا در قالب والد یا قالب فرزند وجود دارد.
استثنایی در اینباره وجود ندارد. وقتیکه فایل مرتبطترین الگو در هر دو قالب والد و فرزند وجود داشته باشد، وردپرس از فایل قالب فرزند استفاده کرده و مورد مشابه از قالب والد را نادیده میگیرد. این قابلیت، معمولترین استفاده از قالبهای فرزند محسوب میشود – یعنی بازنویسی یک فایل به خصوص در قالب والد.
به مثال های زیر دقت کنید تا درک بهتری از عملکرد قالب داشته باشید:
- اگر قالب فرزند فایل های archive.php و index.php و قالب والد شما category.php و index.php داشته باشد، بنابراین وردپرس از category.php از قالب والد استفاده میکند چرا که بالاترین رتبه را در این سلسله مراتب دارد.
- اگر قالب فرزند category.php و index.php داشته باشد و قالب والد نیز فایل های archive.php و index.php را داشته باشد، وردپرس از فایل category.php از قالب فرزند استفاده میکند و این در واقع بالاترین رتبه در سلسله مراتب محسوب میشود.
- اگر قالب فرزند فایلهای archive.php و index.php را داشته باشد و قالب والدتان فایلهای archive.php و index.php را داشته باشد، وردپرس از فایل archive.php قالب فرزندتان استفاده خواهد کرد. این مساله بدان دلیل است که دو کپی از بالاترین رتبه فایل در این سلسله مراتب وجود دارد و قالب فرزند، فایل های قالب والد را بازنویسی میکند.
بنابراین اگر که میخواهید فایل قالب را در پوسته والدتان بازنویسی کنید، همان فایل را در قالب فرزند با کدی که میخواهید داشته باشیدش ایجاد کنید یا فایلی ایجاد کنید که در سلسله مراتب در رتبه بالاتر قرار میگیرد و آن را در پوشه قالب فرزندتان اضافه کنید.
افزودن توابع بعد از ساخت چایلد تم
توابع به شکل متفاوتی از فایلهای قالب کار میکنند و عملکردشان پیچیدهتر است.
اگر تابعی را به قالب فرزندتان با همان نام به مانند فایل مشابه در قالب والد ایجاد کنید، وردپرس یک پیغام خطا صادر می کند زیرا که میخواهید تابع یکسانی را دوبار فرابخوانید. اما اگر این تابع در قالب والد به صورت pluggable تعریف شد، این اتفاق رخ نمیدهد.
یک فایل pluggable در یک شرط با تابعی دیگر با همان نام قرار میگیرد:
if ( ! function_exists( 'wproket_function_name' ) ) {
function wproket_function_name() {
// contents of function
}
}
در اینجا وردپرس بررسی می کند که هیچ تابع دیگری با همین نام پیشتر فراخوانده نشده باشد. اگر اینطور باشد، این تابع را اجرا خواهد کرد. این بدان دلیل است که توابع از قالب فرزند پیش از توابع قالب والد فراخوانده میشوند. اگر تابعی را در قالب فرزندتان با همان نام مینویسید، در عوض آن تابع اجرا خواهد شد.
اما اگر تابع قالب والد pluggable نباشد و بخواهید بازنویسیاش کنید چطور؟ خب برای اینکار شما میتوانید تابعی جدید بنویسید که در اصل همان تابع را در قالب والد نادیده میگیرد، چرا که اولویت بالاتری از همان تابع در قالب والد خواهد داشت. همینطور میتوانید این تابع را از قالب والد از hook خارج کنید و تابعی جدید در قالب فرزند بنویسید و تابع جدید را به hook قبلی قلاب کنید.
فرض کنید که تابع قالب والد به صورت زیر باشد:
function wproket_parent_function() {
// contents of function here
}
add_action ( 'init', 'wproket_parent_function' );
اگر تابع شما در قالب فرزند بتواند تابع قالب والد را بازنویسی کند آن هم بدون اینکه جلوی تابع قالب والد از اجرا را بگیرد، بایستی از تابع زیر استفاده کنید:
function wproket_child_function() {
// contents of function here
}
add_action ( 'init', 'wproket_child_function', 20 );
اما اگر بایستی جلوی اجرای تابع قالب والد را بگیریم بایستی ابتدا از قلاب خارجش کنیم:
function wpmu_remove_parent_function(){
remove_action( 'init', 'wproket_parent_function' );
}
add_action( 'wp_head', 'wpmu_remove_parent_function' );
به خاطر داشته باشید که برای اینکار لازم است که تابع remove_action را داخل تابع دیگری وارد کنید، که در اینجا به wp_head قلاب شده است.
بعد از این است که میتوانید این تابع را برای قالب فرزند بنویسید به شکلی که چنین تابعی هیچگاه در قالب والد وجود نداشته است.
ساخت چایلد تم، ابزار مفیدی برای ویرایش قالب
ساخت چایلد تم دو کاربرد مهم و اساسی دارد:
- بعد از ساخت چایلد تم میتوانیم از قالب فرزند برای استایلدهی و اضافه کردن فایلهای الگوی بیشتر استفاده کنیم.
- ساخت
- ساخت چایلد تم به شما اجازه میدهد که قالب والد را بدون ویرایش مستقیم آن ویرایش کنید یا فایلهای الگوی بیشتری اضافه کنید. این بدان معناست که وقتیکه قالب والد در آینده به روز رسانی شد، تغییراتتان از دست نمیرود.
5 / 5. 1
دیدگاهتان را بنویسید