تابع get_taxonomy در وردپرس
تابع get_taxonomy() در وردپرس ابزاری ساده اما بسیار کاربردی برای واکشی شیء (object) مربوط به یک تاکسونومی ثبتشده است. این تابع اطلاعات ساختاری و پیکربندی تاکسونومی را از آرایهٔ داخلی وردپرس برمیگرداند و برای توسعهدهندگان قالب و افزونه بسیار مفید است.
چرا از get_taxonomy() استفاده کنیم؟
- برای خواندن برچسبها (labels) و تنظیمات تاکسونومی بدون دسترسی مستقیم به متغیرهای داخلی.
- برای تصمیمگیری پویا در قالب یا پنل مدیریت بر اساس ویژگیهای تاکسونومی (مثلاً hierarchical یا rewrite).
- برای اعتبارسنجی وجود یا عدم وجود یک تاکسونومی قبل از اجرای عملیات روی آن.
نحوۀ استفاده پایه
$tax = get_taxonomy('category');
if ( $tax ) {
echo $tax->labels->name;
} else {
// تاکسونومی ثبت نشده است
}توضیح: در این مثال، تابع get_taxonomy() شیء مربوط به تاکسونومی با نام «category» را برمیگرداند. اگر تاکسونومی وجود نداشته باشد، مقدار null بازمیگردد. سپس نام نمایشی تاکسونومی از طریق $tax->labels->name چاپ میشود.
ویژگیهای رایج شیء WP_Taxonomy
شیء بازگشتی از get_taxonomy() از نوع WP_Taxonomy بوده و شامل چندین پراپرتی مهم است. جدول زیر مهمترین آنها را نشان میدهد:
| نام پراپرتی | توضیح |
|---|---|
| name | نام تاکسونومی (مثلاً post_tag یا category) |
| labels | مجموعه برچسبها (labels) برای نمایش در رابط کاربری |
| hierarchical | بولی — آیا ساختار درختی دارد (مثل دستهبندی) یا تخت است (مثل برچسب) |
| public | آیا در کوئریهای عمومی در دسترس است |
| show_ui | نمایش در بخش مدیریت |
| object_type | لیستی از نوعهای نوشته که این تاکسونومی برای آنها ثبت شده |
| rewrite | تنظیمات مربوط به بازنویسی آدرسها (slug و options) |
| query_var | نام پارامتر کوئری برای این تاکسونومی |
مثال پیشرفته: نمایش لیستی از تاکسونومیها با جزئیات
$taxonomies = array('category', 'post_tag', 'genre'); // مثال از تاکسونومیها
foreach ( $taxonomies as $t ) {
$tax = get_taxonomy( $t );
if ( ! $tax ) {
echo "تاکسونومی {$t} تعریف نشده.n";
continue;
}
printf(
"نام: %s | hierarchical: %s | object types: %sn",
esc_html( $tax->labels->name ),
$tax->hierarchical ? 'بله' : 'خیر',
implode(', ', $tax->object_type )
);
}توضیح: این کد لیستی از نام تاکسونومیها میگیرد، برای هر کدام get_taxonomy را اجرا میکند و اگر تعریف شده بود، نام نمایشی، مقدار hierarchical و نوعهای نوشته مرتبط را نمایش میدهد. توجه کنید از esc_html برای خروجی امن در قالب استفاده شده است.
کاربردهای عملی و سناریوهای واقعی
- تعیین نوع کنترل فرم در صفحه ویرایش (مثلاً اگر hierarchical باشد از درخت یا چکباکس استفاده شود).
- نمایش یا پنهان کردن ستون مدیریت مرتبط با تاکسونومی با بررسی show_admin_column.
- ساخت لینک بر اساس rewrite[‘slug’] برای ایجاد مسیرهای سفارشی در قالب.
- ایجاد سازگاری بین افزونهها؛ قبل از استفاده از متادیتا یا توابع اختصاصی، وجود تاکسونومی بررسی شود.
مثال: انتخاب ویجت یا کنترل بر اساس hierarchical
$tax = get_taxonomy('genre');
if ( $tax && $tax->hierarchical ) {
// نمایش درختی یا dropdown مخصوص دستهبندیها
} else {
// نمایش لیست تگ مانند (checkboxes یا text input)
}توضیح: این نمونه نشان میدهد چگونه میتوان قبل از رندر کردن فرم، تصمیم گرفت که از چه نوع کنترل واسط استفاده کنیم. کاربردی در توسعه قالب و فرمهای سفارشی.
نکات امنیتی و بهینهسازی
- همیشه مقدار بازگشتی get_taxonomy را چک کنید تا از خطاهای PHP جلوگیری شود.
- برای خروجی در قالب از توابع فرانتاند ایمن مانند esc_html یا esc_attr استفاده کنید.
- در صورتی که از get_taxonomy در حلقههای پرتکرار استفاده میکنید، بهتر است نتیجه را کش کنید تا فراخوانیهای مکرر کاهش یابد.
خطاهای رایج و راهحلها
- برگشت null: معمولاً به این دلیل است که تاکسونومی هنوز ثبت نشده یا نام اشتباه است — بررسی کنید که register_taxonomy قبل از فراخوانی اجرا شده باشد (مثلاً روی هوک init).
- عدم مشاهده تغییرات: اگر تنظیمات rewrite تغییر کردهاند، ممکن است نیاز به بازسازی پیوندهای یکتا (Permalinks) باشد.
بهترین روش: استفاده در هوک init
اگر میخواهید بعد از ثبت تاکسونومی از get_taxonomy استفاده کنید، اطمینان حاصل کنید که کد شما بعد از ثبت اجرا میشود. معمولاً بهترین محل استفاده درون هوک init با priority مناسب است.
add_action( 'init', function() {
// ابتدا تاکسونومی را ثبت میکنیم
register_taxonomy( 'genre', 'post', array(
'label' => 'Genre',
'hierarchical' => true,
) );
// سپس از get_taxonomy استفاده میکنیم
$tax = get_taxonomy( 'genre' );
if ( $tax ) {
// پردازش دلخواه
}
}, 20 );توضیح: در این کد ابتدا تاکسونومی ثبت شده و سپس با priority=20 که بعد از اولویت پیشفرض اجرا میشود، get_taxonomy فراخوانی شده تا مطمئن شویم تاکسونومی قبلاً ثبت شده است.
جمعبندی
تابع get_taxonomy() ابزار ساده اما کلیدی برای دسترسی به تنظیمات داخلی تاکسونومیها در وردپرس است. با بررسی ویژگیهایی مانند labels، hierarchical، object_type و rewrite میتوانید رفتار قالب و افزونه را بهصورت پویا کنترل کنید. همواره نتایج را اعتبارسنجی کرده و در خروجیها از توابع ایمنسازی استفاده کنید تا هم عملکرد بهینه و هم امنیت حفظ شود.
آیا این مطلب برای شما مفید بود ؟




