تیم توسعه دهنده وردپرس، از ابتدای شروع کارش شعاری انتخاب کردند که بعد از سالها اعتقاد خود به آن را کاملا نشان داده اند:
کُد شعر است.
اگر پیاچپی را الفبا بدانیم، بی شک وردپرس دیوان شعر بسیار زیباییست که هر خط آن مصرعی شاهکار و هر تابع آن غزل زیبایی است.
توسعه یک وب سایت که با وردپرس ایجاد شده است، بسیار لذت بخش و هیجان انگیز است، با استفاده از امکاناتی که قالب وردپرس در اختیار ما میگذارد دسترسی به تمامی بخش های این برنامه داریم و میتوانیم از انعطاف پذیری نامحدود آن لذت ببریم.
با استفاده از توابع موجود و با کمی کد، علاوه بر «نوشته» و «برگه» که در ابتدای نصب وردپرس موجود است، نوع محتوای جدیدی ایجاد میکنیم که میتواند غیر از عنوان و متن، فیلدهای مختلف دیگری نیز داشته باشد. محتوایی شبیه پیوندهای قرمز در سایت ما که علاوه بر عنوان و توضیحات، لینک مورد نظر را نیز دریافت می کند، بایگانی های منظم همیشگی وردپرس را دارد و با برچسبها نیز دسته بندی میشوند.
این نوشته در ادامه «یک ترفند وردپرسی» در مورد قدرت قالب وردپرس و سلسله مراتبی بودن آن است، در مورد دیگر توانایی های منحصر به فرد وردپرس هفته های دیگر مطالبی خواهیم نوشت.
قالب وردپرس
ساده ترین قالب وردپرس فقط دارای یک فایل پیاچپی به اسم index.php و یک فایل سیاساس به اسم style.css است، سیستم کنترل قالب وردپرس، جزئیات قالب را از کامنت ابتدای فایل سیاساس میخواند، در بخش قالبها در قسمت مدیریت نشان میدهد و برای نحوه نمایش مطالب از فایل پیاچپی پیروی میکند، فایل پیاچپی مذکور حتما باید شامل یک حلقه وردپرسی باشد، حلقه مشهوری که با استفاده از آن به پایگاه داده وردپرس دسترسی پیدا میکنیم و مطالب را به شکل دلخواه نمایش میدهیم.
توابع قالب وردپرس
از ساده ترین قالب وردپرس شروع کردیم، قالبی که فقط دو فایل دارد و تمامی صفحات ما با آن ایجاد میشود، اما وردپرس توابعی دارد که برای ساده تر کردن توسعه قالبها از آن استفاده میشود و با استفاده از آنها میتوانیم بخش های مختلف قالب خود را در فایلهای متفاوتی داشته باشیم و برای تغییر هر قسمت از قالب مجبور به ویرایش تمام قالب نباشیم، توابعی مانند get_header()،get_footer() و get_sidebar(), اصلی ترین توابع ذکر شده هستند که فایلهای header.php, footer.php و sidebar.php را در قالب ما جای گذاری میکنند. این ۳ تابع برای جای گذاری فایلهای استاندارد قالب وردپرس استفاده میشوند اما اگر فایل با اسم دیگری داشته باشیم میتوانیم به راحتی از تابع get_template_part() استفاده کنیم که این تابع اجازه جای گذاری فایلهایی که درپوشه های مختلف قالب خود قرار داده ایم را به ما میدهد.
سلسله مراتب قالب وردپرس
گفتیم که قالب وردپرس با یک فایل میتواند اجرا شود و تمامی صفحات بر اساس آن ساخته میشوند، اما اگر ما قالب متفاوتی برای صفحات خاص در نظر داشته باشیم راه حل چیست؟
در قالب وردپرس مفهومی به عنوان سلسله مراتب قالب (Template Hierarchy) وجود دارد این مفهوم که در پیاده سازی هسته وردپرس گنجانده شده است، در هنگام تولید صفحات بر اساس نوع صفحه تلاش برای پیدا کردن قالبهای ویژه آن صفحه میکند و اگر آن فایل وجود نداشته باشد به سراغ مرتبه بعدی میرود و در نهایت اگر هیچ فایلی وجود نداشته باشد با کمک index.php صفحات را ایجاد میکند.
روش تولید این فایلها هم بسیار ساده است، کافیست اسم آن را به صورت مناسب انتخاب کنیم، مثلا همانطور که در بالا گفتیم، ما نوع محتوایی به نام پیوندهای قرمز (redlinks) داریم، قالب ما برای ساخت صفحات بایگانی از فایل archive.php استفاده میکند، اما ما فایل دیگری به نام archive-redlinks.php نیز در قالب قرار داده ایم و وردپرس به صورت خودکار از این فایل برای ساخت صفحه بایگانی پیوندهای قرمز استفاده میکند.
در تصویر زیر و سایت http://wphierarchy.com جزئیات این سلسله مراتب به شکل خوبی نمایش داده شده است.
حال به نظر شما آیا واقعا کدهای وردپرس شعر هستند؟
این جمله:
عالی بود، عالی
ممنون از حسن نظرتون:)
نوع محتوا منظورتون همون custom post type که توی وردپرس ساخته میشه است یا چیز دیگه؟
مشه در مورد اون هم مطلبی بنویسید؟
من توابعش رو دیدم ول نفهمیدم کجا باید بزارمشون
توی قالب گذاشتم کار نکرد
بله، منظورم همونه، کدهای ساده و مشخصی داره، بعد از اینکه کدهاش رو آماده کردید باید توی فایل functions.php توی قالبتون بزارید.
ممنون!
اونجا گذاشتم و همونجوری که توی راهنماش نوشته بود توی مدیریت اضافه شد.
ولی از نظر من کدهاش ساده و راحت نیستن، راه میانبر نداره؟ 😀
برای وردپرس همیشه راه میانبر پیدا میشه 😉
برای اضافه کردن نوع محتوای جدید هم یه سری پلاگین وجود داره ولی من پیشنهاد میکنم با استفاده از این سایت: http://generatewp.com/post-type/ کدهای لازم رو بسازید و به فایل functions.php اضافه کنید.
منظورم دقیقا همین راه های میانبر بود!
بازم ممنون آقای مومنی، مطلب خیلی خوبی نوشتید.
بله.چرا که نه