تابع wp_get_recent_posts در وردپرس
تابع 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() یک ابزار قدرتمند و سریع برای نمایش آخرین پستها در وردپرس است. با استفاده صحیح از پارامترها و اصول بهینهسازی، میتوانید بخشی زیبا و کارآمد برای نمایش محتوای جدید سایت خود ایجاد کنید. این تابع، سادگی و سرعت را همزمان برای توسعهدهندگان فراهم میکند و در بیشتر قالبها و افزونهها بهطور گسترده مورد استفاده قرار میگیرد.
آیا این مطلب برای شما مفید بود ؟




