Filter Hierarchy چگونه انجام می شود؟

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

این قسمت، بخش سوم از معرفی ساختار سلسه مراتبی قالب وردپرس یا همان Template Hierarchy می باشد. در این بخش به تشریح نحوه کارفیلتر کردن ساختار سلسه مراتبی قالب وردپرس و همین طور تغییر ترتیب آن یا اضافه کردن عناصری به آن، خواهیم پرداخت و به صورت کامل شرح خواهیم داد که Filter Hierarchy چگونه بر آن اعمال می شود یا در واقع چگونه می توانTemplate Hierarchy را مورد فیلتر کردن قرار داد.

filter hierarchy چگونه کار می کند؟

Filter Hierarchy به چه معنی می باشد و چگونه انجام می شود؟

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

همانگونه که بیان شد، بسته به نوع query type ، وردپرس از ترتیب خاصی برای جستجوی Template File مورد نظر خود استفاده می کند که این ترتیب بر اساس ساختار سلسه مراتبی قالب یا همان Template Hierarchy ، برای وردپرس انجام می پذیرد.

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

این فیلتر خاص در وردپرس (که در داخل تابع get_query_template واقع شده است) از فیلتری با نام type_template$ استفاده می کند که در آن متغیر type ، در واقع template type ای می باشد که قرار است مورد فیلتر شدن واقع گردد. لیست کلیه فیلتر های موجود برای فیلتر کردن ساختار سلسه مراتبی قالب وردپرس، به شرح زیر می باشد:

  • embed_template
  • ۴۰۴_template
  • search_template
  • frontpage_template
  • home_template
  • taxonomy_template
  • attachment_template
  • single_template
  • page_template
  • singular_template
  • category_template
  • tag_template
  • author_template
  • date_template
  • archive_template
  • index_template

یک مثال برای درک کامل نحوه فیلتر کردن ساختار سلسه مراتبی یا Filter Hierarchy در وردپرس

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

  • author-{nicename}.php
  • author-{id}.php
  • author.php

حال فرض کنید بخواهیم تا قالبی با شکل author-{role}.php را که در آن role هر کاربر نیز بررسی می گردد، پیش از فایل author.php، مورد جستجو قرار داده و وارد ساختار سلسه مراتبی قالب وردپرس نماییم.

برای این کار می باید از فیلتری با نام author_template که برای فیلتر نمودن template type مربوط به author می باشد، استفاده نماییم. برای این کار می توانید از تکه کد زیر استفاده نمایید:

function author_role_template( $templates = '' ) {
    $author = get_queried_object();
    $role = $author->roles[0];
 
    if ( ! is_array( $templates ) && ! empty( $templates ) ) {
        $templates = locate_template( array( "author-$role.php", $templates ), false );
    } elseif ( empty( $templates ) ) {
        $templates = locate_template( "author-$role.php", false );
    } else {
        $new_template = locate_template( array( "author-$role.php" ) );
        if ( ! empty( $new_template ) ) {
            array_unshift( $templates, $new_template );
        }
    }
 
    return $templates;
}
add_filter( 'author_template', 'author_role_template' );

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

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