ویژگی تصویر

آموزش تابع next_post_link() در وردپرس و کاربرد آن

  /  وردپرس   /  تابع next_post_link در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

تابع 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_ می‌توانید کنترل کامل‌تری روی خروجی ناوبری داشته باشید، آن را مطابق نیازهای سئو و دسترسی تنظیم کنید و در قالب‌های حرفه‌ای‌تر لینک‌های سفارشی و امن تولید کنید.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: