تابع get_the_tag_list در وردپرس
تابع get_the_tag_list() یکی از توابع مفید وردپرس برای گرفتن لیست تگهای یک نوشته بهصورت آماده برای نمایش است. این تابع رشتهای از لینکهای تگ را بازمیگرداند و برخلاف the_tags() که خروجی را چاپ میکند، قابل ذخیره و پردازش بیشتر میباشد.
امضای تابع و پارامترها
امضای تابع به شکل زیر است:
get_the_tag_list( $before = '', $sep = '', $after = '', $post_id = 0 )توضیح پارامترها:
- $before: رشتهای که قبل از لیست قرار میگیرد (مثلاً برچسب “Tags:” یا یک تگ HTML باز).
- $sep: جداکننده بین هر تگ (مثل “، ” یا ” | “).
- $after: رشتهای که بعد از لیست قرار میگیرد.
- $post_id: شناسه نوشتهای که تگهای آن باید دریافت شود؛ اگر 0 باشد، نوشته جاری استفاده میشود.
مثال ساده در قالب (template)
<?php
echo get_the_tag_list( '<div class="post-tags">Tags: ', ' • ', '</div>' );
?>در این مثال، اگر نوشتهای چند تگ داشته باشد، خروجی چیزی شبیه به زیر خواهد بود:
<div class=”post-tags”>Tags: <a href=”…”>tag1</a> • <a href=”…”>tag2</a></div>
این نمونه مناسب زمانی است که بخواهید نمایش تگها را کنترل کنید یا آن را در متغیری ذخیره و بعداً استفاده کنید.
فرق get_the_tag_list با the_tags و get_the_term_list
| تابع | خروجی | قابلیت کنترل |
|---|---|---|
| get_the_tag_list() | رشته (برمیگرداند) | بسیار بالا (قابل ذخیره و فیلتر) |
| the_tags() | چاپ مستقیم | کمتر (بیشتر برای قالبنویسی ساده) |
| get_the_term_list() | برای هر تکسونومی قابل استفاده | عمومیتر (میتوان برای دردستهبندیها یا تکسونومیهای سفارشی استفاده کرد) |
مثال پیشرفته: افزودن کلاس و attributes به لینک تگها
تابع بهصورت مستقیم امکان اضافه کردن کلاس به هر لینک را ندارد، اما میتوانید از فیلترهای وردپرس استفاده کنید:
add_filter( 'term_links-post_tag', 'my_post_tag_links' );
function my_post_tag_links( $links ) {
foreach ( $links as &$link ) {
// اضافه کردن کلاس و rel
$link = str_replace( '<a ', '<a class="tag-link" rel="tag" ', $link );
}
return $links;
}توضیح: این کد فیلتر term_links-post_tag را هدف قرار میدهد که آرایه لینکهای تولیدشده برای تکسونومی post_tag را میگیرد. سپس با یک جایگزینی ساده، کلاس و صفت rel را به هر لینک اضافه میکنیم.
نمونه استفاده در single.php با fallback و ایمنی خروجی
<?php
$tags = get_the_tag_list( '<ul class="tags-list"><li>', '</li><li>', '</li></ul>' );
if ( $tags ) {
// خروجی را با wp_kses_post امن میکنیم تا از HTML مخرب جلوگیری شود
echo wp_kses_post( $tags );
} else {
echo '<p class="no-tags">No tags for this post.</p>';
}
?>توضیح: در این نمونه، تگها درون یک لیست مرتب قرار میگیرند. ابتدا بررسی میکنیم آیا تگ وجود دارد یا نه؛ سپس خروجی را با wp_kses_post() امن کرده و چاپ میکنیم. در صورت نبودن تگ، یک پیام جایگزین نمایش داده میشود.
بهینهسازی و نکات حرفهای
- همیشه خروجی را Escaping کنید: اگر از خروجی مستقیم تابع استفاده میکنید، از توابعی مثل
esc_html()یاwp_kses_post()بهره ببرید تا از حملات XSS جلوگیری شود. - برای بارگذاری در حلقههای بزرگ (مانند فهرست مطالب)، بهتر است کشینگ را در نظر بگیرید تا تماسهای تکراری به پایگاه داده کاهش یابد.
- اگر میخواهید قالب لینک متفاوتی (مثلاً nofollow یا هدینگ ARIA) داشته باشید، از فیلترهای مربوط به term links یا استفاده از
get_the_terms()و ساخت دستی لینکها استفاده کنید. - برای تکسونومیهای دلخواه از
get_the_term_list()استفاده کنید که پارامتر تکسونومی را میپذیرد. - اعتبار سئویی: افزودن rel=”tag” مناسب است، اما از اضافه کردن صفات غیرضروری که ممکن است برای موتورهای جستجو مضر باشد اجتناب کنید.
وقتی نیاز به سفارشیسازی بیشتر دارید
اگر میخواهید خروجی کاملاً سفارشی باشد (مثلاً نمایش تعداد نوشتهها کنار هر تگ، یا اضافه کردن آیکون)، بهتر است از get_the_terms() یا wp_get_post_tags() استفاده کرده و به صورت دستی حلقه بزنید:
$tags = wp_get_post_tags( $post->ID );
if ( $tags ) {
foreach ( $tags as $tag ) {
$link = get_tag_link( $tag->term_id );
echo '<a href="' . esc_url( $link ) . '" class="tag-item">';
echo esc_html( $tag->name );
echo '<span class="tag-count"> (' . intval( $tag->count ) . ')</span>';
echo '</a>';
}
}توضیح: این روش اجازه میدهد هر تگ را پردازش کرده و اطلاعات بیشتری (مثل شمارش) به خروجی اضافه کنید. همچنین کنترل کامل بر روی HTML و attributes خواهید داشت.
نتیجهگیری
تابع get_the_tag_list() مناسب زمانی است که میخواهید بهسرعت لیستی از تگهای یک نوشته را بهصورت لینکشده دریافت کنید و نیاز به ذخیره یا پردازش بیشتر دارید. با رعایت نکات ایمنی، فیلترها و بهینهسازیهای مطرحشده، میتوانید نمایش تگها را به شکل زیبا و مفید در قالب خود پیادهسازی کنید.
آیا این مطلب برای شما مفید بود ؟




