تابع get_the_category_list در وردپرس
تابع get_the_category_list() یکی از ابزارهای ساده و پرکاربرد وردپرس برای نمایش لیست دستهبندیهای مرتبط با یک نوشته است. این تابع بهصورت رشتهای (string) لیستی از لینکهای دستهها را برمیگرداند که معمولاً در قالب متای نوشته یا در تمها برای نمایش دستهبندیها استفاده میشود. در ادامه ساختار، پارامترها، مثالهای عملی و نکات پیشرفته را بررسی میکنیم.
چرا و کجا از get_the_category_list() استفاده کنیم؟
- نمایش سریع دستهبندیهای یک پست در single.php یا index.php
- ساخت بلوک متا (meta box) برای نمایش اطلاعات پست
- ایجاد فهرست لینکشده دستهها در فوتر یا اسلایدرهای مرتبط
سینتکس و پارامترها
سینتکس کلی تابع به شکل زیر است:
get_the_category_list( $separator = '', $parents = '', $post_id = false )توضیح پارامترها:
| پارامتر | نوع | توضیح |
|---|---|---|
| $separator | string | رشتهای که بین هر لینک دسته قرار میگیرد؛ مثلا ‘, ‘ یا ‘ | ‘ |
| $parents | string | برای سازگاری با فیلترها استفاده میشود؛ معمولاً مقدار پیشفرض کافی است |
| $post_id | int|false | شناسه پستی که میخواهید دستههای آن را بگیرید؛ اگر false باشد از حلقه وردپرس استفاده میکند |
مثالهای پایهای
استفاده در داخل حلقه (The Loop)
<?php
echo get_the_category_list( ', ' );
?>این کد درون حلقه، لیستی از دستهها را با جداکنندهٔ کاما نمایش میدهد. خروجی معمولاً چیزی شبیه به این است: <a href=”…”>دسته ۱</a>, <a href=”…”>دسته ۲</a>.
استفاده خارج از حلقه با مشخص کردن شناسه پست
<?php
$post_id = 42;
echo get_the_category_list( ' | ', '', $post_id );
?>اگر میخواهید اطلاعات دسته را برای پستی غیر از پست فعلی بگیرید، شناسه پست را به عنوان پارامتر سوم قرار دهید. در این مثال جداکننده ” | ” است.
نمونهٔ پیشرفته: اضافه کردن کلاس و ساختار HTML
<?php
$cats = get_the_category_list( ', ' );
if ( $cats ) {
echo '<span class="post-categories">' . $cats . '</span>';
} else {
echo '<span class="no-category">بدون دسته</span>';
}
?>در این مثال ابتدا خروجی تابع داخل متغیر قرار میگیرد تا بتوان آن را بررسی یا تزئین (wrap) کرد. اگر پستی دستهای نداشت، یک متن جایگزین نمایش میدهیم. این روش برای جلوگیری از نمایش رشتهٔ خالی و افزودن کلاس CSS کاربردی است.
نکات امنیتی و بهینهسازی
- خروجی تابع به صورت لینک است؛ اگر نیاز به فرمت متفاوت دارید از توابعی مثل strip_tags یا ساخت دستی لینکها استفاده کنید.
- برای جلوگیری از بازنشانی سریع صفحه یا مشکلات CSS، بهتر است خروجی را داخل یک ظرف (container) با کلاس مناسب قرار دهید.
- اگر میخواهید محدودیت یا ترتیب خاصی برای دستهها اعمال کنید، از get_the_terms یا get_the_category() استفاده و سپس لیستسازی دستی انجام دهید.
مثال: محدود کردن نمایش به 2 دستهٔ اول و نمایش بدون لینک
<?php
$terms = get_the_terms( get_the_ID(), 'category' );
if ( $terms && ! is_wp_error( $terms ) ) {
// مرتبسازی بر اساس نام یا هر فیلدی که میخواهید
usort( $terms, function( $a, $b ) {
return strcmp( $a->name, $b->name );
} );
$terms = array_slice( $terms, 0, 2 ); // فقط دو دسته اول
$names = wp_list_pluck( $terms, 'name' );
echo '<span class="cat-names">' . esc_html( implode( ', ', $names ) ) . '</span>';
}
?>در این نمونه از get_the_terms برای دریافت آرایهتر دستهها استفاده شده تا بتوان محدودیت، مرتبسازی و خروجی بدون لینک را کنترل کرد. سپس با wp_list_pluck نامها را استخراج و با esc_html ایمنسازی میکنیم.
تطبیق با زبان و سئو
برای سئو بهتر، از متن کوتاه و توصیفی در کنار دستهها استفاده کنید. میتوانید از دادههای ساختاری (structured data) و یا کلاسهای semantically مناسب استفاده کنید. همچنین از تگهای HTML مانند <nav> یا <ul> برای فهرستبندی دستهها در قالبهای بزرگتر استفاده کنید.
رفع مشکلات معمول
- خروجی نمایش داده نمیشود: مطمئن شوید در داخل حلقه قرار دارید یا شناسه پست به درستی ارسال شده باشد.
- میخواهید دستهها بدون لینک نمایش داده شوند: از get_the_terms و ساخت رشتهٔ دستی استفاده کنید.
- نیاز به فیلتر کردن دستهها دارید: پیش از تبدیل به رشته، آرایهٔ دستهها را فیلتر کنید.
خلاصه و بهترین روشها
- برای نمایش سریع و ساده از get_the_category_list( $sep ); استفاده کنید.
- برای کنترل بیشتر (مرتبسازی، محدودسازی، حذف لینک) از get_the_terms یا get_the_category بهره ببرید.
- همیشه خروجی را با توابع ایمنسازی وردپرس محافظت کنید (مثل esc_html در موارد متنی).
- برای استایل و دسترسیپذیری، خروجی را در یک عنصر با کلاس معنادار قرار دهید.
تابع get_the_category_list() یک روش ساده و سریع برای نمایش دستههاست، اما وقتی نیاز به سفارشیسازی دارید ترکیب آن با توابع دریافت ترمها و ساخت دستی خروجی انعطافپذیری بیشتری فراهم میآورد.
آیا این مطلب برای شما مفید بود ؟




