ویژگی تصویر

تابع register_taxonomy در وردپرس

  /  وردپرس   /  تابع register_taxonomy در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

تابع register_taxonomy() یکی از توابع کلیدی وردپرس است که برای ایجاد طبقه‌بندی‌های سفارشی (Taxonomy) در سایت استفاده می‌شود. این تابع به توسعه‌دهندگان اجازه می‌دهد تا علاوه بر دسته‌ها (Categories) و برچسب‌ها (Tags) پیش‌فرض وردپرس، ساختارهای دسته‌بندی جدیدی برای محتوای خود ایجاد کنند.

مفهوم Taxonomy در وردپرس

در وردپرس، Taxonomy به معنای «دسته‌بندی محتوا» است. برای مثال، در حالت پیش‌فرض وردپرس دو نوع taxonomy دارد:

  • category: برای دسته‌بندی نوشته‌ها
  • post_tag: برای برچسب‌گذاری محتوا

اما گاهی نیاز است برای نوع پست خاصی (مثلاً پست‌های محصولات یا نمونه‌کارها) یک سیستم دسته‌بندی جدید تعریف کنیم. در این مواقع از تابع register_taxonomy() استفاده می‌شود.

ساختار کلی تابع register_taxonomy()

register_taxonomy( 
    string $taxonomy, 
    array|string $object_type, 
    array|string $args = array() 
);

پارامترهای تابع

نام پارامترتوضیح
$taxonomyنام یکتای taxonomy جدید. باید حروف کوچک و بدون فاصله باشد (مثلاً product_type).
$object_typeتعیین می‌کند که این taxonomy به چه نوع پست‌هایی (post types) متصل شود، مانند post یا product.
$argsآرایه‌ای از تنظیمات و ویژگی‌های taxonomy مثل نام، بازنویسی URL، و نوع سلسله‌مراتبی بودن آن.

مثال ساده از تعریف یک taxonomy سفارشی


function create_book_genre_taxonomy() {

    $labels = array(
        'name'              => 'ژانرها',
        'singular_name'     => 'ژانر',
        'search_items'      => 'جستجوی ژانرها',
        'all_items'         => 'همه ژانرها',
        'edit_item'         => 'ویرایش ژانر',
        'update_item'       => 'به‌روزرسانی ژانر',
        'add_new_item'      => 'افزودن ژانر جدید',
        'new_item_name'     => 'نام ژانر جدید',
        'menu_name'         => 'ژانر کتاب‌ها',
    );

    $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_action( 'init', 'create_book_genre_taxonomy' );

توضیح کد بالا

در این مثال ما یک taxonomy به نام genre برای نوع پست book ایجاد کرده‌ایم. با اجرای این کد، در بخش مدیریت وردپرس، یک منوی جدید برای دسته‌بندی کتاب‌ها بر اساس ژانر نمایش داده می‌شود.

  • پارامتر hierarchical = true → یعنی ژانرها می‌توانند سلسله‌مراتبی باشند (مثل دسته‌ها).
  • show_ui = true → یعنی در پنل مدیریت قابل نمایش است.
  • rewrite → تعیین مسیر URL برای این taxonomy (مثلاً site.com/genre/drama).

ایجاد taxonomy غیرسلسله‌مراتبی (مشابه برچسب)

اگر می‌خواهید taxonomy شما مانند برچسب‌ها (tags) عمل کند و سلسله‌مراتبی نباشد، کافی است مقدار hierarchical را false قرار دهید:


function create_movie_tag_taxonomy() {

    $labels = array(
        'name' => 'برچسب‌های فیلم',
        'singular_name' => 'برچسب فیلم',
    );

    $args = array(
        'hierarchical' => false,
        'labels' => $labels,
        'show_ui' => true,
        'rewrite' => array( 'slug' => 'movie-tag' ),
    );

    register_taxonomy( 'movie_tag', 'movie', $args );
}
add_action( 'init', 'create_movie_tag_taxonomy' );

در این مثال، taxonomy جدید به نام movie_tag برای پست تایپ movie ایجاد می‌شود که مشابه برچسب‌های وردپرس کار می‌کند.

بهترین روش‌ها (Best Practices)

  • نام taxonomy را با حروف کوچک و بدون فاصله بنویسید (از underscore استفاده کنید).
  • همیشه از init hook برای اجرای تابع register_taxonomy() استفاده کنید.
  • اگر taxonomy شما URL اختصاصی دارد، حتماً بعد از تعریف آن، لینک‌های دائمی (Permalinks) را در تنظیمات ذخیره کنید.
  • برای سازگاری با زبان‌های مختلف از _x() و __() برای ترجمه متون در labels استفاده کنید.

اتصال taxonomy به چند نوع پست

گاهی لازم است یک taxonomy به بیش از یک نوع پست متصل شود. کافی است پارامتر دوم را به صورت آرایه وارد کنید:


register_taxonomy( 'writer', array( 'book', 'article' ), $args );

در این حالت، taxonomy «نویسنده» برای هر دو نوع پست book و article در دسترس خواهد بود.

مدیریت نمایش taxonomy در قالب

برای نمایش taxonomy در قالب وردپرس می‌توانید از توابع زیر استفاده کنید:

  • the_terms() – برای نمایش اصطلاحات (terms) مرتبط با یک پست.
  • get_terms() – برای دریافت لیست اصطلاحات از یک taxonomy خاص.

مثال کاربردی در فایل قالب


<?php
$terms = get_the_terms( get_the_ID(), 'genre' );
if ( $terms && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a> ';
    }
}
?>

کد بالا، تمامی ژانرهای مرتبط با پست فعلی را به صورت لینک‌دار نمایش می‌دهد.

ویژگی‌های مهم در پارامتر $args

کلیدتوضیحمقدار پیشنهادی
publicتعیین می‌کند که taxonomy در قسمت عمومی سایت قابل مشاهده باشد یا خیر.true
show_in_restبرای پشتیبانی از ویرایشگر گوتنبرگ و REST API.true
show_admin_columnنمایش ستون taxonomy در لیست پست‌ها.true
rewriteبرای تعریف slug سفارشی در URL.array( 'slug' => 'your-slug' )

نکات بهینه‌سازی برای SEO

  • برای هر taxonomy slug کوتاه و مرتبط انتخاب کنید.
  • در توضیحات (description) هر term از کلمات کلیدی استفاده کنید.
  • در قالب، صفحات taxonomy را با عنوان و توضیح مناسب نمایش دهید.
  • از افزونه‌های SEO مانند Rank Math یا Yoast برای مدیریت ایندکس این صفحات استفاده کنید.

جمع‌بندی

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

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: