ویژگی تصویر

تابع wp_get_recent_posts در وردپرس

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

تابع wp_get_recent_posts() یکی از توابع پرکاربرد در وردپرس است که برای دریافت لیستی از نوشته‌های اخیر سایت استفاده می‌شود. این تابع بسیار مفید است وقتی می‌خواهید در بخش‌هایی مانند سایدبار (sidebar)، فوتر یا صفحه اصلی، آخرین پست‌های سایت را نمایش دهید.

در این آموزش به بررسی ساختار، پارامترها، مثال‌های کاربردی و نکات مهم برای بهینه‌سازی استفاده از این تابع می‌پردازیم.

کاربرد کلی تابع wp_get_recent_posts()

این تابع با استفاده از داده‌های جدول wp_posts، اطلاعات پست‌ها را واکشی کرده و به‌صورت آرایه بازمی‌گرداند. شما می‌توانید با فیلتر کردن پارامترها، مشخص کنید چه نوع پست‌هایی (نوشته، برگه یا پست سفارشی) برگردانده شوند.

ساختار کلی تابع

wp_get_recent_posts( array $args = array(), string $output = ARRAY_A );

در اینجا، پارامتر $args شامل گزینه‌هایی برای فیلتر کردن پست‌ها است، و پارامتر دوم نوع خروجی را مشخص می‌کند (به صورت آرایه یا آبجکت).

پارامترهای مهم در تابع wp_get_recent_posts()

پارامترتوضیحپیش‌فرض
numberpostsتعداد پست‌هایی که باید بازگردانده شوند.5
post_statusوضعیت پست‌ها مانند publish، draft، pending.publish
post_typeنوع پست مانند post، page یا نوع سفارشی (Custom Post Type).post
orderbyمعیار مرتب‌سازی پست‌ها، مانند date، title یا ID.date
orderترتیب نمایش: DESC برای نزولی و ASC برای صعودی.DESC

مثال ساده از استفاده تابع wp_get_recent_posts()


$recent_posts = wp_get_recent_posts( array(
    'numberposts' => 5,
    'post_status' => 'publish'
) );

foreach( $recent_posts as $post ){
    echo '<a href="' . get_permalink($post['ID']) . '">' . $post['post_title'] . '</a><br>';
}

در این مثال، تابع پنج پست آخر منتشرشده را بازیابی کرده و با استفاده از get_permalink() لینک هر پست را نمایش می‌دهد. کلید ID شناسه پست و post_title عنوان پست را مشخص می‌کند.

توضیح منطق کد:

  • در آرایه پارامترها، تعداد پست‌ها به ۵ محدود شده است.
  • تنها پست‌هایی با وضعیت publish واکشی می‌شوند.
  • نتیجه بازگشتی آرایه‌ای از پست‌هاست که هر عنصر شامل اطلاعات کامل یک پست است.

مثال پیشرفته با فیلتر نوع پست و مرتب‌سازی سفارشی


$recent_custom = wp_get_recent_posts( array(
    'numberposts' => 8,
    'post_type'   => 'product',
    'orderby'     => 'title',
    'order'       => 'ASC'
) );

foreach( $recent_custom as $item ){
    echo '<p><strong>' . $item['post_title'] . '</strong></p>';
}

در این مثال، آخرین ۸ پست از نوع سفارشی product واکشی می‌شود و ترتیب بر اساس حروف الفبا (عنوان پست) به‌صورت صعودی است.

نکته مهم:

اگر در سایت خود از Custom Post Type استفاده می‌کنید، حتماً مقدار post_type را مطابق نوع سفارشی تعریف‌شده قرار دهید. در غیر این صورت، تابع فقط نوشته‌های معمولی (post) را برمی‌گرداند.

مقایسه با get_posts()

در نگاه اول، توابع wp_get_recent_posts() و get_posts() عملکرد مشابهی دارند، اما تفاوت‌های ظریفی میان آن‌ها وجود دارد.

ویژگیwp_get_recent_posts()get_posts()
نوع خروجیآرایه (Array)آبجکت (WP_Post)
کاربرد عمومینمایش سریع آخرین پست‌هاانعطاف بیشتر برای Query سفارشی
پشتیبانی از فیلترهامحدودترگسترده‌تر (فیلترهای WP_Query)
کارایی در قالب‌هاساده‌تر و سریع‌ترپیشرفته‌تر ولی پیچیده‌تر

اگر فقط قصد نمایش پست‌های اخیر را دارید، استفاده از wp_get_recent_posts() مناسب‌تر است. اما برای فیلترهای پیچیده‌تر (مانند دسته‌ها یا متادیتاها) بهتر است از get_posts() یا WP_Query استفاده کنید.

نمایش پست‌ها با تصویر شاخص


$recent_posts = wp_get_recent_posts( array(
    'numberposts' => 4,
    'post_status' => 'publish'
) );

foreach( $recent_posts as $post ){
    echo '<div class="recent-post-item">';
    if( has_post_thumbnail($post['ID']) ){
        echo get_the_post_thumbnail($post['ID'], 'thumbnail');
    }
    echo '<a href="' . get_permalink($post['ID']) . '">' . $post['post_title'] . '</a>';
    echo '</div>';
}

در این مثال، علاوه بر عنوان پست، تصویر شاخص (Thumbnail) هر پست نیز نمایش داده می‌شود. تابع has_post_thumbnail() بررسی می‌کند که آیا پست تصویر شاخص دارد یا خیر، و سپس آن را با get_the_post_thumbnail() نمایش می‌دهد.

نکات بهینه‌سازی:

  • برای کاهش بار سرور، تعداد پست‌ها را محدود نگه دارید (مثلاً حداکثر ۵ تا ۱۰).
  • از کش (Cache) برای جلوگیری از درخواست‌های مکرر استفاده کنید.
  • در خروجی HTML از کلاس‌های CSS برای استایل‌دهی بهتر استفاده کنید.

افزودن شرط برای حذف پست فعلی از لیست


global $post;
$recent_posts = wp_get_recent_posts( array(
    'numberposts' => 5,
    'post__not_in' => array( $post->ID ),
    'post_status' => 'publish'
) );

foreach( $recent_posts as $p ){
    echo '<a href="' . get_permalink($p['ID']) . '">' . $p['post_title'] . '</a><br>';
}

در این مثال، پست فعلی از لیست پست‌های اخیر حذف می‌شود تا از تکرار در نمایش جلوگیری شود. پارامتر post__not_in برای این کار استفاده شده است.

نکات امنیتی و بهترین روش‌ها (Best Practices)

  • قبل از چاپ مقادیر در خروجی، همیشه از توابع امن مانند esc_html() یا esc_url() استفاده کنید.
  • در صورت نیاز به Query پیچیده، از WP_Query استفاده کنید تا کنترل بیشتری داشته باشید.
  • برای بهبود سرعت بارگذاری، نتایج را در transient یا object cache ذخیره کنید.
  • در قالب‌ها از توابع ترجمه مانند __() یا _e() برای چندزبانه کردن استفاده کنید.

جمع‌بندی

تابع wp_get_recent_posts() یک ابزار قدرتمند و سریع برای نمایش آخرین پست‌ها در وردپرس است. با استفاده صحیح از پارامترها و اصول بهینه‌سازی، می‌توانید بخشی زیبا و کارآمد برای نمایش محتوای جدید سایت خود ایجاد کنید. این تابع، سادگی و سرعت را همزمان برای توسعه‌دهندگان فراهم می‌کند و در بیشتر قالب‌ها و افزونه‌ها به‌طور گسترده مورد استفاده قرار می‌گیرد.

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

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