ثبت دستهبندی سفارشی در وردپرس (Custom Taxonomy)
با تابع `register_taxonomy` دستهبندی مورد نظر را بسازید و آن را به پستتایپ اختصاصی متصل کنید.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29<?php
/**
* ثبت تاکسونومی سفارشی برای نمونهکارها (دستهبندی پروژهها)
*/
function bisco_register_portfolio_taxonomy() {
$labels = array(
'name' => 'دستهبندی پروژهها',
'singular_name' => 'دسته پروژه',
'search_items' => 'جستجوی دستهها',
'all_items' => 'همه دستهها',
'parent_item' => 'دسته مادر',
'parent_item_colon' => 'دسته مادر:',
'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,
'show_in_rest' => true, // نمایش در پنل سایدبار گوتنبرگ
'rewrite' => array( 'slug' => 'project-type' ),
);
register_taxonomy( 'project_type', array( 'portfolio' ), $args );
}
add_action( 'init', 'bisco_register_portfolio_taxonomy' );
کد را کجا قرار دهیم؟ (Placement Guide)
کد را به functions.php اضافه کرده و سپس پیوندهای یکتا را در تنظیمات ذخیره کنید.
این کد چگونه کار میکند؟ (How it Works)
تاکسونومی جدید در جدول wp_term_taxonomy ذخیره شده و ستون مدیریت آن به جدول مدیریت پستتایپ portfolio متصل میگردد.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
جهت طبقهبندی منظم پستهای سفارشی به بخشها یا موضوعات گوناگون.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
اگر یک پستتایپ به هیچ دستهبندی نیاز ندارد.
پیشنیازهای اجرا
وردپرس ۵.۰ به بالا.
نحوه تست و اطمینان از عملکرد
به بخش «نمونه کارها» در پیشخوان بروید؛ زیرمنوی «دستهها» اضافه شده و در جدول نوشتهها ستون جدید آن نمایش مییابد.
نحوه بازگردانی سریع (Rollback)
کد را حذف کنید.
خطاهای رایج و راهحل رفع
تنظیم نکردن 'show_in_rest' => true که باعث ناپدید شدن باکس انتخاب دستهها در ویرایشگر گوتنبرگ میشود.
ملاحظات و نکات امنیتی
اسلاگها با متد امنیتی ثبت میشوند.
تاثیر بر سرعت و پرفورمنس
ساختار ایندکس شده جداول ترمها پاسخگویی بسیار سریعی در کوئریها دارد.