ویژگی تصویر

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

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

تابع previous_post_link() یکی از توابع کاربردی وردپرس برای نمایش لینک «مطالب قبلی» در صفحه single پست‌ها است. این تابع به صورت مستقیم لینک HTML به مطلب قبلی را چاپ می‌کند و برای ساخت ناوبری میان پست‌ها در قالب‌ها (themes) بسیار مفید است. در این مقاله پارامترها، مثال‌های عملی، نکات سئو و روش‌های پیشرفته‌تر جایگزینی یا بهینه‌سازی را با مثال‌های کد توضیح می‌دهیم.

امکانات کلی و کاربردها

  • نمایش لینک به پست قبلی در single.php یا templateهای مشابه
  • امکان محدود کردن به همان دسته/تاکسونومی
  • قابلیت حذف یا استثناء کردن برخی دسته‌ها
  • قابل استفاده در پست تایپ‌های سفارشی با مشخص کردن taxonomy

امضای تابع و پارامترها

پارامترشرح
formatقالب خروجی که %link در آن جایگزین لینک کامل می‌شود. پیش‌فرض ‘%link’
linkمتن لینک یا قالب متن که %title در آن با عنوان پست جایگزین می‌شود. پیش‌فرض ‘%title’
in_same_termاگر true باشد، تنها مطالبی از همان تاکسونومی نمایش داده می‌شوند. پیش‌فرض false
excluded_termsآی‌دی دسته‌ها یا ترم‌هایی که باید از جستجو حذف شوند (comma-separated)
taxonomyتاکسونومی مورد نظر (مثلاً ‘category’ یا نام یک taxonomy سفارشی). پیش‌فرض ‘category’

مثال پایه

previous_post_link('%link', '« %title');

این کد لینک پست قبلی را به صورت “« عنوان پست” چاپ می‌کند. اگر پست قبلی وجود نداشته باشد، خروجی‌ای تولید نمی‌شود.

مثال پیشرفته — محدود به همان دسته

previous_post_link('%link', 'قبلی: %title', true);

با مقدار true برای پارامتر سوم، لینک تنها از بین پست‌هایی که در همان دسته (category) هستند انتخاب می‌شود. این برای محتواهایی که مرتب بر اساس دسته‌بندی معنی‌دار هستند مناسب است.

چگونه بررسی کنیم که لینک وجود دارد یا نه؟

چون previous_post_link مستقیماً خروجی را چاپ می‌کند، گاهی لازم است ابتدا بررسی کنیم تا در صورت نبودن پست قبلی خروجی دیگری نمایش دهیم. برای این کار از get_previous_post() یا get_previous_post_link() استفاده می‌کنیم.

$prev = get_previous_post();
if ( $prev ) {
    echo get_previous_post_link('%link', '← %title');
} else {
    echo '<span class="no-prev">مطلب قبلی وجود ندارد</span>';
}

در این مثال ابتدا با get_previous_post() شیء پست قبلی را می‌گیریم. سپس با get_previous_post_link لینک را به صورت رشته دریافت و چاپ می‌کنیم یا در غیر این صورت پیام مناسب نمایش می‌دهیم.

ساختار دلخواه با استفاده از داده پست (برای افزودن کلاس و rel)

گاهی لازم است کنترل کامل روی قالب لینک، افزودن rel=”prev” یا درج تصویر بندانگشتی داشته باشیم. برای این منظور بهتر است از get_previous_post() استفاده کرده و خودمان HTML را بسازیم:

$prev_post = get_previous_post();
if ( $prev_post ) {
    $url   = get_permalink( $prev_post->ID );
    $title = esc_html( get_the_title( $prev_post->ID ) );
    $thumb = get_the_post_thumbnail( $prev_post->ID, 'thumbnail' );
    echo '<a href="'. esc_url( $url ) .'" rel="prev" class="prev-link">'
         . $thumb
         . '<span class="prev-title">' . $title . '</span>'
         . '</a>';
}

در این کد کنترل روی کلاس‌ها، rel و قرار دادن تصویر بندانگشتی را خودمان انجام می‌دهیم که برای طراحی و دسترسی (accessibility) بهتر مطلوب است.

کار با Custom Post Types و تاکسونومی‌ها

اگر از پست‌تایپ سفارشی استفاده می‌کنید و می‌خواهید محدودسازی بر اساس یک تاکسونومی خاص انجام شود، پارامتر taxonomy را مشخص کنید:

previous_post_link('%link', 'قبلی: %title', true, '', 'my_taxonomy');

با این‌کار فقط بین پست‌هایی که در همان my_taxonomy اشتراک دارند جستجو انجام می‌شود.

نکات سئو و دسترسی (SEO & Accessibility)

  • لینک‌های ناوبری با rel=”prev” / rel=”next” برای موتورهای جستجو و مرورگرها مفیدند؛ اما وردپرس آن‌ها را معمولاً در head صفحات قرار می‌دهد. برای افزودن rel روی خود anchor، از روش ساخت دستی (get_previous_post) استفاده کنید.
  • متن لینک را گویا نگه دارید؛ بهتر است از عنوان پست یا توصیف کوتاه استفاده کنید تا کاربر و موتورهای جستجو بدانند به چه محتوایی منتقل می‌شوند.
  • همیشه خروجی‌ها را esc_html یا esc_url کنید تا امن باشند.

نکات عملی و بهترین روش‌ها

  • در قالب‌های حرفه‌ای، از get_previous_post() برای کنترل بهتر HTML و افزودن عناصر تصویری یا aria-label استفاده کنید.
  • از get_previous_post_link وقتی می‌خواهید خروجی را قبل از چاپ پردازش کنید (مثلاً درون یک شرط).
  • در صفحات آرشیو یا جستجو از این تابع استفاده نکنید؛ این تابع مختص صفحات تک پست است.
  • در صورت نیاز به استایل‌دهی، به جای تغییر مستقیم خروجی از کلاس‌های CSS استفاده کنید.

نمونه کامل: قرار دادن لینک قبلی و بعدی به صورت یک بلوک ناوبری

echo '<nav class="post-navigation">';
echo '<div class="nav-previous">';
previous_post_link('%link', '<span class="nav-label">قبلی</span> <span class="nav-title">%title</span>');
echo '</div>';
echo '<div class="nav-next">';
next_post_link('%link', '<span class="nav-label">بعدی</span> <span class="nav-title">%title</span>');
echo '</div>';
echo '</nav>';

این قطعه HTML یک بلوک ناوبری با دو ستون برای لینک قبلی و بعدی ایجاد می‌کند. با CSS می‌توان این بلوک را به شکل مناسبی نمایش داد.

جمع‌بندی

تابع previous_post_link() ساده ولی قدرتمند است و برای ناوبری بین پست‌ها بسیار مناسب است. برای کنترل بیشتر روی HTML، افزودن ویژگی‌های دسترسی یا نمایش thumbnail بهتر است از get_previous_post() استفاده کنید. همچنین همیشه خروجی‌ها را پاکسازی (escape) کنید و در صورت نیاز محدودسازی با پارامترهای in_same_term و taxonomy را به کار بگیرید. با رعایت نکات سئو و دسترسی، می‌توانید تجربه کاربری و رتبه صفحات را بهبود دهید.

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

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