تابع get_taxonomies در وردپرس
تابع get_taxonomies() یکی از توابع مهم وردپرس برای دریافت فهرستی از taxonomyها (واژهنامهها) در سایت است. این تابع به توسعهدهندگان امکان میدهد تا بر اساس شرایط دلخواه، نام یا شیء کامل taxonomyها را دریافت و در قالبها، افزونهها یا ابزارهای مدیریتی استفاده کنند.
امکانها و آرگومانهای تابع
- $args (array): آرایهای از شرایط (مانند public, show_ui, object_type و غیره) برای فیلتر کردن taxonomyها.
- $output (string): تعیین میکند خروجی به صورت ‘names’ (پیشفرض) یا ‘objects’ باشد.
- $operator (string): نحوه اعمال چند شرط در $args؛ ‘and’ یا ‘or’.
امضا (signature) تابع
get_taxonomies( $args = array(), $output = 'names', $operator = 'and' )این تابع یک آرایه بازمیگرداند؛ اگر $output برابر ‘names’ باشد، کلیدها نام taxonomyها هستند (مثلاً category, post_tag یا custom taxonomyهای ثبت شده). اگر ‘objects’ انتخاب شود، آرایهای از اشیاء WP_Taxonomy برگردانده میشود.
مثال پایه: دریافت taxonomyهای عمومی
$taxonomies = get_taxonomies( array( 'public' => true ), 'names' );
foreach ( $taxonomies as $taxonomy ) {
echo $taxonomy . '<br>';
}در این مثال تمامی taxonomyهای عمومی (public) بهصورت نامها برگردانده شده و چاپ میشوند. این روش ساده برای نمایش لیست taxonomyها در صفحه تنظیمات یا بخش گزارشگیری مناسب است.
مثال پیشرفته: دریافت اشیاء taxonomy و نمایش برچسب
$tax_objects = get_taxonomies( array( 'public' => true ), 'objects' );
foreach ( $tax_objects as $taxonomy ) {
echo '<h4>' . esc_html( $taxonomy->labels->name ) . '</h4>';
echo '<p>Name: ' . esc_html( $taxonomy->name ) . '</p>';
echo '<p>Object Types: ' . implode( ', ', $taxonomy->object_type ) . '</p>';
}در این نمونه با خروجی ‘objects’ به اشیاء WP_Taxonomy دسترسی پیدا میکنیم و میتوانیم برچسبها، نام فنی و نوع شیئاتی که taxonomy به آنها مرتبط شده را نمایش دهیم. استفاده از esc_html برای جلوگیری از آسیبپذیری XSS توصیه میشود.
کاربردهای عملی و نمونههای رایج
- ساخت پنل مدیریتی سفارشی برای نمایش و فیلتر taxonomyها.
- در یک قالب، نمایش تنها taxonomyهایی که به یک post type خاص مرتبط هستند (مانند book یا product).
- تولید فرمهای فیلتر بر اساس taxonomyها در صفحات archive یا جستجو.
مثال: دریافت taxonomyهای مرتبط با یک post type خاص
$post_type = 'book';
$tax_for_post_type = get_taxonomies( array( 'object_type' => array( $post_type ) ), 'names' );
print_r( $tax_for_post_type );در این کد، با استفاده از کلید object_type، فقط taxonomyهایی که به post type مشخص (مثلاً book) مرتبط شدهاند برگردانده میشوند. توجه داشته باشید که object_type آرایهای از نامهایی است که هنگام ثبت taxonomy تعریف شدهاند.
مقایسه با توابع مشابه
| تابع | کاربرد |
|---|---|
| get_taxonomies() | گرفتن لیست taxonomyها بر اساس آرگومانها (names یا objects) |
| get_object_taxonomies() | گرفتن taxonomyهای مرتبط با یک post type مشخص (یک سطح بالاتر از استفاده در قالب) |
| get_taxonomy() | گرفتن شیء یک taxonomy مشخص با نام آن |
تفاوت اصلی: get_object_taxonomies بیشتر برای دسترسی سریع به taxonomyهای یک نوع نوشته است؛ در حالی که get_taxonomies انعطافپذیری بیشتری برای فیلترهای متعدد فراهم میکند.
نکات امنیتی و بهینهسازی
- همیشه خروجی را قبل از چاپ از طریق توابع escaping مناسب مانند esc_html، esc_attr یا wp_kses پالایش کنید.
- در صورت استفاده در حلقههای پر تکرار یا صفحات با درخواستهای زیاد، نتایج را با Transient API یا cache محلی ذخیره کنید تا بار دیتابیس کاهش یابد.
- در محدود کردن نتایج از شرایط دقیق استفاده کنید (مثلاً public, show_ui) تا تعداد آیتمها غیرضروری زیاد نشود.
مثال کامل: نمایش فرم فیلتر بر اساس taxonomyهای یک post type
$post_type = 'product';
$taxonomies = get_taxonomies( array( 'object_type' => array( $post_type ), 'public' => true ), 'objects' );
if ( ! empty( $taxonomies ) ) {
echo '<form method="get">';
foreach ( $taxonomies as $tax ) {
$terms = get_terms( array( 'taxonomy' => $tax->name, 'hide_empty' => true ) );
if ( empty( $terms ) ) {
continue;
}
echo '<label>' . esc_html( $tax->labels->name ) . '</label>';
echo '<select name="' . esc_attr( $tax->name ) . '">';
echo '<option value="">-- همه --</option>';
foreach ( $terms as $term ) {
echo '<option value="' . esc_attr( $term->slug ) . '">' . esc_html( $term->name ) . '</option>';
}
echo '</select>';
}
echo '<button type="submit">فیلتر</button>';
echo '</form>';
}این قطعه کد یک فرم ساده میسازد که بر اساس taxonomyهای مرتبط با post type مشخص، منوهای انتخابی (select) تولید میکند. سپس میتوانید با گرفتن مقادیر GET، یک WP_Query با tax_query مناسب بسازید تا نتایج فیلتر شود.
جمعبندی و نکات پایانی
تابع get_taxonomies() ابزاری قدرتمند برای توسعهدهندگان وردپرس است که با انعطاف در فیلترها و خروجیها امکان ساخت رابطهای مدیریتی، فیلترها و محتوای داینامیک را فراهم میکند. با درک پارامترها، خروجیها و نکات امنیتی میتوانید از این تابع به شکل بهینه و امن در قالبها و افزونههای خود استفاده کنید.
آیا این مطلب برای شما مفید بود ؟




