تابع register_taxonomy در وردپرس
تابع 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 استفاده کنید).
- همیشه از
inithook برای اجرای تابع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() یکی از مهمترین ابزارهای توسعهدهندگان وردپرس برای سازماندهی دادههاست. با استفاده از آن میتوانید ساختار محتوایی حرفهای و منظم ایجاد کنید که هم برای کاربران و هم موتورهای جستجو قابل درک باشد.
آیا این مطلب برای شما مفید بود ؟




