رفتن به مطلب
انجمن تخصصی پرسش و پاسخ
miladworkshop

تعریف Custom Taxonomy در وردپرس

پست های پیشنهاد شده

define-custom-taxonomy-01.jpg

 

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

 

بخش اول: تعریف Custom Taxonomy در وردپرس


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

 

البته راهکارهای دیگری نیز برای این کار وجود دارد مانند استفاده از Must Use Plugin تا در هر صورت حتی با switch کردن بین تم ها، همچنان دسته بندی سفارشی شما در سایت وردپرسی شما قابل دسترس باشد. برای اطلاعات بیشتر می توانید به لینک مربوط به آن در پایین صفحه مراجعه کنید.

 

فرض کنید یکی از این گروه بندی های سفارشی ژانر (یا همان ژانر کتاب بوده) که می خواهیم آن را به صورت سلسله مراتبی یا Hierarchical تعریف کنیم و دیگری گروه بندی نویسنده می باشد که نمی خواهیم به صورت سلسه مراتبی یا همان Hierarchical تعریف نماییم.

 

برای تعریف Custom Taxonomy با نام ژانر یا genre و همین طور نویسنده یا writer ، مراحل زیر را انجام می دهید:

 

  • ایجاد یک فایل با نام custom-post-type.php در دایرکتوری inc واقع در فولدر قالب وردپرس مورد نظر (شما می توانید از همان فایلی که در قسمت قبل این آموزش ساخته شده است، استفاده کنید)
  • فراخوانی این فایل در فایل functions.php با استفاده از دستور include
include get_template_directory() . '/inc/custom-post-type.php';
  • متصل نمودن تابع  create_book_taxonomies با استفاده از add_action به هوک init 
  • تعریف label های مورد استفاده برای رجیستر کردن  genre_custom_taxonomy  و writer_custom_taxonomy در داخل تابع  
  • تعریف آرگومان های لازم به صورت آرایه برای رجیستر کردن  genre_custom_taxonomy  و writer_custom_taxonomy
  • ثبت طبقه بندی سفارشی با استفاده از تابع register_taxonomy
// hook into the init action and call create_book_taxonomies when it fires
add_action( 'init', 'create_book_taxonomies', 0 );
// create two taxonomies, genres and writers for the post type "book"
function create_book_taxonomies() {
  // Add new taxonomy, make it hierarchical (like categories)
  $labels = array(
    'name'              => _x( 'Genres', 'taxonomy general name', 'textdomain' ),
    'singular_name'     => _x( 'Genre', 'taxonomy singular name', 'textdomain' ),
    'search_items'      => __( 'Search Genres', 'textdomain' ),
    'all_items'         => __( 'All Genres', 'textdomain' ),
    'parent_item'       => __( 'Parent Genre', 'textdomain' ),
    'parent_item_colon' => __( 'Parent Genre:', 'textdomain' ),
    'edit_item'         => __( 'Edit Genre', 'textdomain' ),
    'update_item'       => __( 'Update Genre', 'textdomain' ),
    'add_new_item'      => __( 'Add New Genre', 'textdomain' ),
    'new_item_name'     => __( 'New Genre Name', 'textdomain' ),
    'menu_name'         => __( 'Genre', 'textdomain' ),
  );
  $args = array(
    'hierarchical'      => true,
    'labels'            => $labels,
    'show_ui'           => true,
    'show_admin_column' => true,
    'query_var'         => true,
    'rewrite'           => array( 'slug' => 'genre' ),
  );
  register_taxonomy( 'genre', array( 'book' ), $args );
  // Add new taxonomy, NOT hierarchical (like tags)
  $labels = array(
    'name'                       => _x( 'Writers', 'taxonomy general name', 'textdomain' ),
    'singular_name'              => _x( 'Writer', 'taxonomy singular name', 'textdomain' ),
    'search_items'               => __( 'Search Writers', 'textdomain' ),
    'popular_items'              => __( 'Popular Writers', 'textdomain' ),
    'all_items'                  => __( 'All Writers', 'textdomain' ),
    'parent_item'                => null,
    'parent_item_colon'          => null,
    'edit_item'                  => __( 'Edit Writer', 'textdomain' ),
    'update_item'                => __( 'Update Writer', 'textdomain' ),
    'add_new_item'               => __( 'Add New Writer', 'textdomain' ),
    'new_item_name'              => __( 'New Writer Name', 'textdomain' ),
    'separate_items_with_commas' => __( 'Separate writers with commas', 'textdomain' ),
    'add_or_remove_items'        => __( 'Add or remove writers', 'textdomain' ),
    'choose_from_most_used'      => __( 'Choose from the most used writers', 'textdomain' ),
    'not_found'                  => __( 'No writers found.', 'textdomain' ),
    'menu_name'                  => __( 'Writers', 'textdomain' ),
  );
  $args = array(
    'hierarchical'          => false,
    'labels'                => $labels,
    'show_ui'               => true,
    'show_admin_column'     => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var'             => true,
    'rewrite'               => array( 'slug' => 'writer' ),
  );
  register_taxonomy( 'writer', 'book', $args );
}

 

نقل قول

دقت در تعریف Custom Taxonomy برای Hierarchical بودن یا نبودن آن
در نظر داشته باشید که شما برای ساخت یک رده بندی سفارشی یا همان Custom Taxonomy ، می توانید آن را به صورت Hierarchical  یا None-hierarchical تعریف نمایید. در صورتی که آن را به صورت Hierarchical تعریف نمایید، کلیه term های موجود در دسته بندی سفارشی شما، خود می توانند دارای دسته بندی های مجزایی در داخل خود باشند در صورتی که در حالت دیگر، ساختار شما به صورت تک سطحی خواهد بود.

 

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

  • در داخل تابع create_book_taxonomies ، شما متغیرهای label را تعریف خواهید کرد که شامل آرایه ای از تمامی برچسب ها و نام های موجود استفاده شده، در طبقه بندی سفارشی شما می باشد. شما می توانید از توابع ترجمه وردپرس استفاده کرده و آن ها را تعریف نمایید. ضمن اینکه می باید در انتهای هر بخش، text domain مورد نظر برای آن ها را هم ذکر کنید.
  • پس از تعریف label ها، شما متغیر args را تعریف می کنید که حاوی کلیه اطلاعات لازم برای ثبت کردن گروه بندی سفارشی شما می باشد. در واقع شما با این آرگومان ها، می توانید نحوه رفتار custom taxonomy خود در سایت وردپرس را مدیریت نمایید.
  • پارامتر rewrite برای وردپرس بیان می نماید که چگونه می باید url های مربوط به این رده بندی سفارشی شما را بازنویسی کند و به کاربر نمایش دهد.
  • پارامتر اول در تابع register_taxonomy با نام Taxonomy Key شناخته می شود که وردپرس برای ذخیره و بازیابی custom taxonomy شما، از آن استفاده خواهد کرد. بهتر است این اسم طوری انتخاب شود که با موارد دیگر تداخل نداشته و معنی و مفهوم آن را نیز، برساند.
  • پارامتر دوم تابع register_taxonomy که با نام object_type شناخته می شود، می تواند یک رشته یا آرایه ای از نوع های مختلف در وردپرس باشد. شما با تعریف این بخش، به وردپرس اعلام می کنید که این طبقه بندی سفارشی شما، برای کدام نوع ها (مثلا post یا page یا custom post type دلخواه) مورد استفاده قرار بگیرد. در مثال بالا، ما به وردپرس یاد آور شده ایم که این دسته بندی ها، فقط برای پست سفارشی کتاب یا همان book مورد استفاده قرار بگیرند.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You can post now and register later. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • جدید...