سبد خرید0

سبد خرید شما خالی است.

قالب فرزند

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

شاید بخواهید از فونت جدیدی استفاده کنید یا اگوی جدید اضافه کنید. شاید هم بخواهید کدی را با قالب خود بیافزایید. یا اینکه طراحی دلخواه خود را بر آن اعمال کنید.

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

اما برای رفع این مشکل و برای ویرایش پایدار و بدون دردسر پوسته چه می‌شود کرد؟

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

جاوااسکریپت در وردپرس: چگونه جاوااسکریپت را به وردپرس بیافزاییم؟

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

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

ساخت قالب فرزند

اولین کاری که بایستی انجام دهید این است که پوسته فرزند را در پوشه wp-content/themes ایجاد کنید. پوسته فرزند بایستی دو فایل داشته باشد تا کار کند: یکی stylesheet و دیگری فایل functions. می توانید فایل های دیگری را هم بدان ها اضافه کنید مانند فایل های الگو و …

برای قالب فرزند خود پوشه ای در پوشه قالب ها ایجاد کنید و نام مناسبی هم بدان اعطا کنید. مثلا wproket-child-theme.

در داخل این پوشه فایل استایل با نام style.css را ایجاد کنید. در ابتدای این فایل استایل کد زیر را وارد کنید.

این کد به وردپرس اطلاعات مشابهی مانند هر قالب دیگر ارایه می کند؛ تنها با یک تفاوت: Template: wproket که به وردپرس می گوید که این قالب، یک قالب فرزند برای wproket است.

می توانید از هر قالبی به عنوان قالب والد تنها با استفاده از نام پوشه ای که ذخیره شده استفاده کنید. از عنوان قالب استفاده نکنید؛ از نام پوشه استفاده کنید.

حالا فایل استایل را ذخیره کرده و فایل دیگری به نام functions.php در پوسته فرزند ایجاد کنید.

در این قایل، بایستی فایل استایل را از قالب والد وارد صف کنید. پیشتر برای اینکار از import@ استفاده می کردید که دیگر روش توصیه شده نیست. در عوض می توانید در فایل functions خود این کد را وارد کنید:

این روش به شکل درستی فایل استایل را از قالب والد وارد صف می کند و برای یافتن قالب مدنظر از ()get_template_directory_uri استفاده می کند (پوشه قالب، پوشه ای است که قالب والد در آن ذخیره شده است، در حالیکه پوشه استایل پوشه ای است که قالب جاری در آن ذخیره شده است).

اگر که می خواهید هر استایلی را به قالب فرزندتان اضافه کنید تا استایل را در قالب والد بازنویسی کند، به استایل قالب فرزند خود رفته و موارد مدنظر خود را بدان بیافزایید. این کدها را به فایل functions اضافه نکنید و تلاش نکنید تا فایل های استایل بیشتری را وارد صف کنید.

سئو چیست و چگونه می‌توان از این طریق ترافیک بیشتری داشت؟

همچنین می توانید توابعی را به فایل functions قالب فرزند و فایل های الگوی موجود در پوشه قالب بیافزایید که همان فایل های الگو در قالب والد را بازنویسی می کنند.

ساخت فایل قالب

حالا به فایل های قالب نگاهی بیاندازید. وردپرس از کدام فایل قالب برای نمایش صفحه ای در سایت شما استفاده می کند و این مساله به دو مورد بستگی دارد: ساختار قالب و فایل هایی که به قالب فرزندتان افزوده اید.

تصویر کنید که در حال بازدید از صفحه بایگانی دسته بندی مسافرت از وبسایتتان هستید. همانطور که می دانید وردپرس از ساختار قالب برای یافتن مرتبطترین فایل استفاده می کند:

  1. فایل الگوی بایگانی دسته بندی برای دسته بندی مشخصی با استفاده از نامک: category-travel.php
  2. فایل الگوی بایگانی دسته بندی برای دسته بندی مشخصی با استفاده از شناسه: category-23.php
  3. فایل کلی بایگانی دسته بندی: category.php
  4. فایل بایگانی کلی: archive.php
  5. فایل اصلی: 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 در یک شرط با تابعی دیگر با همان نام قرار میگیرد:

در اینجا وردپرس بررسی می کند که هیچ تابع دیگری با همین نام پیشتر فراخوانده نشده باشد. اگر اینطور باشد، این تابع را اجرا خواهد کرد. این بدان دلیل است که توابع از قالب فرزند پیش از توابع قالب والد فراخوانده می شوند. اگر تابعی را در قالب فرزندتان با همان نام می نویسید، آن تابع در عوض اجرا خواهد شد.

اما اگر تابع قالب والد pluggable نباشد و بخواهید بازنویسی اش کنید چطور؟

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

فرض کنید که تابع قالب والد به صورت زیر باشد:

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

اما اگر بایستی جلوی اجرای تابع قالب والد را بگیریم بایستی ابتدا از قلاب خارجش کنیم:

به خاطر داشته باشید که برای اینکار هنوز لازم است که تابع remove_action را داخل تابع دیگری وارد کنید، که در اینجا به wp_head قلاب شده است.

بعد از این است که می توانید این تابع را برای قالب فرزند بنویسید به شکلی که چنین تابعی هیچگاه در قالب والد وجود نداشته است.

پوسته فرزند، ابزار مفیدی برای ویرایش قالب هستند

پوسته فرزند دو استفاده اصلی دارند:

  • با قالبی که به عنوان قالب والد مورد استفاده قرار میگیرد. برای استایل دهی و اضافه کردن فایل های الگوی بیشتر از قالب فرزند استفاده می کنید.
  • به شما اجازه می دهد که قالب والد را بدون ویرایش مستقیم آن ویرایش کنید یا فایل های الگوی اضافه ای بدان بیافزایید. این بدان معناست که وقتیکه قالب والد در آینده به روز رسانی شد، کارتان از دست نمی رود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

question