تابع next_post_link در وردپرس
تابع next_post_link() یکی از توابع کاربردی وردپرس برای نمایش لینک نوشته بعدی (Next Post) در صفحه تک نوشته است. این تابع برای ناوبری بین مطالب، بهخصوص در قالبها و تمها استفاده میشود و امکاناتی برای فیلتر کردن بر اساس دستهبندی یا تخصیص طبقهبندی (taxonomy) ارائه میدهد.
قالب کلی و پارامترها
ساختار تابع به صورت زیر است:
next_post_link( string $format = '%link', string $link = '%title', bool $in_same_term = false, string|array $excluded_terms = '', string $taxonomy = 'category' )توضیحات پارامترها:
- $format: قالب نهایی که معمولاً %link در آن قرار میگیرد. میتوانید HTML اطراف لینک را اضافه کنید.
- $link: متن لینک که معمولاً از %title برای عنوان نوشته استفاده میشود. میتوانید از %date نیز بهره ببرید.
- $in_same_term: اگر true باشد، فقط نوشتههایی از همان طبقهبندی (مثلاً همان دسته) نمایش داده میشوند.
- $excluded_terms: آیدی دستهها یا اصطلاحاتی که میخواهید حذف شوند (رشته یا آرایه).
- $taxonomy: نام طبقهبندی که فیلتر بر اساس آن اعمال میشود، پیشفرض ‘category’.
مثال پایهای
<?php
// نمایش لینک نوشته بعدی با عنوان نوشته
next_post_link('%link', 'نوشته بعدی: %title');
?>این کد به صورت پیشفرض لینک نوشته بعدی را چاپ میکند و در متن لینک کلمه «نوشته بعدی: » قبل از عنوان مطلب قرار میگیرد.
استفاده در قالب single.php با ساختار ناوبری
<nav class="post-navigation" aria-label="Post">
<div class="nav-next">
<?php next_post_link('%link', '<span class="meta-nav">Next</span> %title'); ?>
</div>
</nav>این نمونه ساختار ناوبری با کلاسهای CSS است تا بتوانید استایل دلخواه بزنید. از ویژگی aria-label برای دسترسپذیری (accessibility) استفاده شده است.
فیلتر کردن بر اساس دسته یا taxonomy
<?php
// نمایش لینک نوشته بعدی که در همان دسته قرار دارد
next_post_link('%link', 'مطالب مرتبط: %title', true);
?>وقتی پارامتر سوم true باشد، لینک فقط بین نوشتههای همان دسته (category) ساخته میشود. اگر از taxonomy سفارشی استفاده میکنید، پارامتر پنجم را مشخص کنید:
<?php
// فیلتر بر اساس taxonomy سفارشی 'genre'
next_post_link('%link', '%title', true, '', 'genre');
?>در اینجا تابع تنها بین نوشتههایی که در یک اصطلاح (term) از taxonomy ‘genre’ مشترک هستند حرکت میکند.
حذف دستهبندیها یا اصطلاحات خاص
<?php
// نادیده گرفتن دستههایی با آیدی 5 و 12
next_post_link('%link', '%title', false, array(5,12));
?>با استفاده از آرایه یا رشته میتوانید اصطلاحات را حذف کنید تا ناوبری شامل نوشتههای آنها نباشد.
get_next_post_link() در مقابل next_post_link()
تفاوت اصلی این است که next_post_link() خروجی را مستقیم چاپ میکند، اما get_next_post_link() مقدار را بازمیگرداند. اگر میخواهید خروجی را قبل از چاپ تغییر دهید یا در متغیر ذخیره کنید، از get_next_post_link استفاده کنید.
<?php
$link = get_next_post_link('%link', 'ادامه: %title');
if ( $link ) {
// میتوانید قبل از چاپ تغییراتی بدهید
echo '<div class="my-next">' . wp_kses_post($link) . '</div>';
}
?>در این مثال خروجی با wp_kses_post پاکسازی شده و سپس درون یک div مخصوص چاپ میشود که برای امنیت و جلوگیری از تزریق HTML مفید است.
مثال حرفهای: افزودن کلاس، rel و آیکون SVG
<?php
next_post_link('%link', '<span class="icon"><!-- SVG --></span> <span class="label">بعدی</span> <span class="title">%title</span>', false, '', 'category');
?>در این حالت میتوانید HTML دلخواه را در $link قرار دهید. اما مراقب باشید: اگر HTML خروجی از کاربران یا منابع غیرمطمئن میآید آن را حتماً واکشی/پاکسازی کنید.
جایگزینی با get_next_post و ساخت لینک دستی
<?php
$next = get_next_post();
if ( $next ) {
$url = get_permalink( $next->ID );
$title = esc_html( get_the_title( $next->ID ) );
echo '<a href="'.esc_url($url).'" rel="next">' . $title . '</a>';
}
?>این روش زمانی مفید است که نیاز دارید به خواص بیشتر شی WP_Post دسترسی داشته باشید (مثلاً متادیتا یا تصاویر شاخص) و ساختار لینک کاملتر یا سفارشیتری بسازید.
نکات و بهترین شیوهها (Best Practices)
- از esc_url و esc_html برای جلوگیری از آسیبپذیری XSS استفاده کنید.
- اگر خروجی را تغییر میدهید، از get_next_post_link بهجای echo مستقیم بهره ببرید.
- برای سئو، از rel=”next” استفاده کنید تا موتورهای جستجو درک بهتری از ساختار محتوا داشته باشند.
- برای دسترسپذیری، aria-label یا متن واضح داخل لینک قرار دهید.
- در سایتهای با پستتایپ سفارشی، taxonomy مناسب را مشخص کنید تا ناوبری دقیقتری داشته باشید.
مقایسه سریع توابع مرتبط
| تابع | عمل |
|---|---|
| next_post_link() | چاپ لینک نوشته بعدی |
| get_next_post_link() | بازگرداندن رشته لینک نوشته بعدی (قابل پردازش) |
| previous_post_link() | چاپ لینک نوشته قبلی |
| get_next_post() | بازگرداندن شی WP_Post نوشته بعدی |
جمعبندی
تابع next_post_link() یک ابزار ساده و در عین حال قدرتمند برای ناوبری میان نوشتهها در وردپرس است. با دانستن پارامترها و تفاوت با نسخههای get_ میتوانید کنترل کاملتری روی خروجی ناوبری داشته باشید، آن را مطابق نیازهای سئو و دسترسی تنظیم کنید و در قالبهای حرفهایتر لینکهای سفارشی و امن تولید کنید.
آیا این مطلب برای شما مفید بود ؟




