لینک کردن فایل های قالب وردپرس – مقدمه

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

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

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

لینک کردن فایل های قالب وردپرس و دایرکتوری ها

در این قسمت از آموزش های طراحی قالب وردپرس، با روش های لینک کردن فایل های قالب وردپرس و دایرکتوری ها خواهیم پرداخت و بررسی می کنیم که برای فراخوانی بخش های مختلف قالب وردپرس، به چه صورت باید Template Files را در وردپرس فراخوانی کنیم و از آن ها در بخش مختلف قالب خود استفاده نماییم.

لینک کردن فایل های قالب وردپرس به فایل های اصلی هسته قالب وردپرس

همانگونه که در بخش های قبلی آشنا شدید، قالب های وردپرس از تعداد مختلفی از Template File  ها ساخته شده است. در کمترین حالت، یک قالب بطور عمومی شامل فایل های sidebar.php و header.php و footer.php می باشد.

برای فراخوانی این سه فایل در فایل های موجود در قالب و لینک کردن این فایل ها به سایر فایل های قالب وردپرس، شما می توانید از Template Tags زیر استفاده کنید:

در واقع اگر شما بخواهید در یک فایل خود، فایل header.php را فراخوانی کنید، تنها کافی است تا از تابع  get_header استفاده نمایید.

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

نام این فایل های سفارشی اصولا به صورتی شبیه  sidebar-{your_custom_template}.php و  header-{your_custom_template}.php  و  footer-{your_custom_template}.php می باشد. در اینگونه موارد برای لینک کردن فایل های قالب وردپرس خود با این فایل های سفارشی، کافی است تا نام آن را بصورت زیر و با استفاده از template tag ها، فراخوانی کنید:

get_header( 'your_custom_template' );
get_footer( 'your_custom_template' );
get_sidebar( 'your_custom_template' );

لینک کردن فایل های قالب وردپرس به سایر فایل های موجود در قالب

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

مسلما به غیر از فایل های استاندارد موجود در قالب وردپرس (مانند فایل های هدر و فوتر و سایدبار)، شما ممکن است فایل های مختلفی را در قالب وردپرس خود اضافه کنید تا به امکانات قالب وردپرس خود بیافزایید.

شما می توانید انواع فایل های سفارشی یا همان custom template files را در قالب خود ایجاد نمایید و سپس در هرجایی که به آن ها نیاز داشتید، آن ها توسط تابع get_template_file فراخوانی نمایید.

برای نامگذاری فایل های ساخته شده قالب توسط خودتان، می توانید اسم مورد نظر خود را که بیانگر کارکرد آن فایل در قالب شما می باشد، بر روی فایل قرار داده و در نام گذاری خود از همان سیستم نام گذاری قالب های سفارشی (همانند آنچه برای هدر و فوتر و سایدبار و سایر قسمت های استاندارد پیاده می کنید) استفاده نمایید:

slug-template.php

فرض کنید که شما می خواهید یک custom template برای مدیریت محتوای پست های خود بسازید. برای این منظور می توانید از نام content.php برای فایل خود بهره بگیرید. حال فرض کنید که می خواهید کارایی این قالب سفارشی را خاص تر نمایید و می خواهید و مثلا چیدمان یا layout خاصی برای بخش محتوای محصول داشته باشید. در این صورت اسم خود را خاص تر انتخاب کرده و از نامگذاری content-product.php استفاده می کنید. در صورتی که این فایل در دایرکتوری اصلی قالب شما قرار داشته باشد، برای فراخوانی این فایل می توانید به روش زیر اقدام نمایید:

get_template_part( 'content', 'product' );

ممکن است تصمیم بگیرید تا ساختار منظم تری را در قالب خود اعمال کنید و کلیه بخش های مربوط به بخش سفارشی محتوا را، در یک دایرکتوری جداگانه قرار دهید. به عنوان مثال فرض کنید علاوه بر بخش محتوای محصول، شما می خواهید layout های جداگانه برای محتوای profiles و همین طور location داشته باشید.

در این صورت بهتر است که به جای شلوغ کردن دایرکتوری اصلی قالب وردپرس، فایل های مربوط به هر بخش را بطور جداگانه دسته بندی کرده و آن ها در یک دایرکتوری جداگانه قرار دهیم. به عنوان مثال فرض کنید برای بخش سفارشی content یک فولدر جداگانه با نام content-template ایجاد می کنیم و فایل های content-location.php و content-product.php و content-profile.php را در داخل آن قرار می دهیم.

در این صورت اگر مثلا نام قالب وردپرس شما msn-theme باشد، ساختار داخل آن چیزی شبیه زیر خواهد بود:

themes (dir)
      - msn-theme (dir)
            - content-templates (dir)
                  - content-location.php
                  - content-product.php
                  - content-profile.php
            - style.css
            - page.php
            ...

در این صورت برای include کردن فایل های مورد نظر (یا همان لینک کردن فایل های قالب وردپرس به این فایل ها و دایرکتوری جدید)، کافی است  تا از تابع get_template_part با دو آرگومان ورودی استفاد کنیم که برای آرگومان اول، نام دایرکتوری شامل این فایل ها را به ابتدای نام فایل خود اضافه می کنم و برای آرگومان دوم، بخش بعد از – را مطابق زیر، به تابع ارسال خواهیم کرد.

get_template_part( 'content-templates/content', 'location' );
get_template_part( 'content-templates/content', 'product' );
get_template_part( 'content-templates/content', 'profile' );

لینک کردن فایل های قالب وردپرس به دایرکتوری های قالب وردپرس

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

در صورتی که شما از child theme استفاده نکنید، این تابع URI کامل فولدر اصلی قالب شما را باز می گرداند. بنابراین اگر بخواهید مثلا به یکی از فایل های داخل ساب فولدرهای قالب خود دسترسی داشته باشید، کافی است تا از فرمت زیر استفاده کنید:

echo get_theme_file_uri( 'images/logo.png' );

در صورتی که شما از یک پوسته فرزند یا همان child theme استفاده کنید، این تابع URI مربوط به child theme  را در صورت وجود، به شما باز خواهد گرداند. اما در صورتی که نتواند پوسته فرزند مورد نظر را بیابد، در آن صورت این تابع URI مربوط به پوسته اصلی یا همان parent theme را باز خواهد گرداند.

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

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

دقیقا مشابه تابع get_theme_file_uri ، تابع get_theme_file_path نیز در صورتی که پوسته فرزند موجود و  فعال باشد، مسیر دایرکتوری پوسته فرزند را به شما باز می گرداند. حال در صورتی که این فایل در child theme موجود باشد، وردپرس آن را باز خواهد گرداند اما در غیر این صورت، مسیر فایل موجود در parent theme را باز می گرداند.

در صورتی که بخواهید درون فایل های child theme خود، فایل های قالب اصلی یا parent theme را فراخوانی کنید و یا نیاز به یک URI در parent theme داشته باشید، کافی است از تابع های زیر استفاده نمایید:

برای لینک کردن فایل های قالب وردپرس، می توانید با استفاده از این توابع می توانید فایل های یا دایرکتوری های خود را به مسیر ها یا URI های دلخواه، لینک نمایید:

echo get_parent_theme_file_uri( 'images/logo.png' );
//or
echo get_parent_theme_file_path( 'images/logo.png' );

همواره باید مراقب مسیردهی داده شده توسط خود باشید، چرا که اگر فایل یا مسیر یا URI مورد نظر در قالب شما وجود نداشته باشد، خروجی این توابع مسلما broken link خواهد بود و این می تواند باعث مشکلات فراوان در سایت وردپرسی شما گردد.

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

جدا از نحوه تنظیمات permalink ها در پنل ادمین سایت وردپرس شما، شما می توانید با استفاده از dynamic linking صفحات یا پست های خود را بصورت داینامیک در بین کدهای خود فراخوانی کنید.

برای فراخوانی پست ها یا صفحات خود به صورت داینامیک کافی است که از تابع get_permalink استفاده کرده و ID عددی پست یا صفحه مورد نظر خود را به عنوان آرگومان، به این تابع ارسال کنید:

<a href="<?php echo get_permalink($ID); ?>">This is a link</a>

این یک راه ساده است برای زمانی است که شما می خواهید یک منو از صفحات یا پست های خود بسازید که در طول زمان ممکن است slug  این پست ها یا صفحات، به کرات عوض شود. بنابراین بدون نگرانی از اینکه دچار breaking link گردید، می توانید از ID آن ها، برای این کار استفاده نمایید. البته در نظر داشته باشید که این کار ممکن است باعث افزایش تعداد کوئری های زده شده به دیتابیس شما گردد.

راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:

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