تابع get_the_date در وردپرس
تابع get_the_date() یکی از توابع پایهای وردپرس برای دریافت تاریخ انتشار یک پست به صورت فرمتشده است. این تابع رشتهای (string) را برمیگرداند و برخلاف the_date() که معمولاً خروجی را چاپ میکند، به شما امکان میدهد تاریخ را در متغیر ذخیره کرده و سپس با کنترل کامل نمایش دهید.
امضا و پارامترها
امضای پایه تابع به شکل زیر است:
string get_the_date( string $format = '', int|WP_Post|null $post = null )توضیح پارامترها:
- $format: رشته فرمت تاریخ مانند ‘Y-m-d’ یا قالبهای وردپرس مانند ‘F j, Y’. اگر خالی بماند از فرمت تنظیمشده در پیشخوان استفاده میکند.
- $post: آیدی پست یا شیء WP_Post. اگر خالی باشد از پست جاری در حلقه (loop) استفاده میشود.
مثالهای پایه
<?php
// در حلقه وردپرس
echo esc_html( get_the_date() );
// فرمت مشخص
echo esc_html( get_the_date( 'Y-m-d' ) );
// با شناسه پست خاص
echo esc_html( get_the_date( 'F j, Y', 123 ) );
?>توضیح: در این مثالها از esc_html() برای امنسازی خروجی استفاده شده است. استفاده از تابع بدون پارامتر درون حلقه، تاریخ پست جاری را برمیگرداند. با ارسال شناسه پست میتوانید تاریخ هر پستی را جداگانه دریافت کنید.
تفاوت get_the_date() با the_date() و توابع مرتبط
درک تفاوت بین توابع مرتبط بسیار مهم است تا رفتارهای غیرمنتظره را نداشته باشید.
| تابع | خروجی | توضیح |
|---|---|---|
| get_the_date() | رشته (برمیگرداند) | همیشه تاریخ پست را برمیگرداند؛ مناسب برای ذخیره یا فرمدهی دلخواه |
| the_date() | چاپ (echo) | بهطور پیشفرض در حلقه فقط زمانی چاپ میشود که تاریخ با پست قبلی متفاوت باشد |
| get_the_modified_date() | رشته | تاریخ آخرین ویرایش پست را بازمیگرداند |
| get_post_time() | تاریخ یا timestamp | برای دریافت timestamp یا فرمت ISO مناسب است |
نمایش تاریخ سازگار با سئو (Schema و time element)
<time datetime="<?php echo esc_attr( get_the_date( 'c' ) ); ?>">
<?php echo esc_html( get_the_date() ); ?>
</time>توضیح: استفاده از فرمت ISO 8601 (با پارامتر ‘c’) در صفت datetime برای موتورهای جستجو و سیستمهای خوانای ماشین مفید است. همزمان نمایش قابل خواندن برای کاربر هم نشان داده میشود. حتماً خروجیها را با esc_attr و esc_html امن کنید.
گرفتن timestamp و تاریخ ویرایش
<?php
// دریافت timestamp یونیکس برای پست جاری
$timestamp = get_post_time( 'U', false );
// نمایش فاصله زمانی مانند "3 روز پیش"
echo human_time_diff( $timestamp, current_time( 'timestamp' ) ) . ' پیش';
// تاریخ آخرین ویرایش
echo esc_html( get_the_modified_date( 'F j, Y' ) );
?>توضیح: وقتی به timestamp نیاز دارید یا میخواهید محاسبات زمانی انجام دهید، بهتر است از get_post_time('U') استفاده کنید. برای نمایش تاریخ آخرین ویرایش از get_the_modified_date() بهره ببرید.
نمایش تاریخ جلالی (شمسی)
وردپرس بهصورت پیشفرض از تقویم میلادی استفاده میکند. برای نمایش تاریخ شمسی معمولاً از پلاگینهایی مثل WP-Jalali یا توابع کتابخانهای استفاده میکنیم. اگر تابع jdate() یا مشابه آن نصب باشد میتوانیم با یک فیلتر خروجی get_the_date را تغییر دهیم:
<?php
add_filter( 'get_the_date', 'my_jalali_get_the_date', 10, 3 );
function my_jalali_get_the_date( $the_date, $format, $post ) {
if ( function_exists( 'jdate' ) ) {
$timestamp = get_post_time( 'U', false, $post );
return jdate( $format, $timestamp );
}
return $the_date;
}
?>توضیح: این کد قبل از نمایش تاریخ بررسی میکند که آیا تابع jdate موجود است یا خیر (که توسط افزونههای جلالی فراهم میشود). سپس با استفاده از timestamp پست، تاریخ را به فرمت جلالی برمیگرداند. اگر افزونه نصب نباشد، خروجی پیشفرض وردپرس بازگردانده میشود.
نکات امنیتی و بهینهسازی
- همیشه خروجی تاریخ را با
esc_html()یاesc_attr()بسته به مکان نمایش امن کنید. - اگر چند بار نیاز به تاریخ در یک حلقه دارید، مقدار را در یک متغیر نگه دارید تا چند بار تابع صدا زده نشود.
- برای مقاصد سئو و ساختار داده از تگ <time> و فرمت ‘c’ استفاده کنید.
- در صورت نیاز به تقویم غیر از میلادی از پلاگینهای معتبر استفاده کنید و تغییرات را از طریق فیلترها اعمال کنید تا افزونهپذیری حفظ شود.
نمونه استفاده در قالب (بهینه و امن)
<?php
// در فایل single.php یا content.php
$published = get_the_date( 'c' ); // برای datetime
$display = get_the_date(); // برای نمایش قابلخواندن
?>
<article id="post-<?php the_ID(); ?>" class="post">
<header class="entry-header">
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-meta">
<time datetime="<?php echo esc_attr( $published ); ?>"><?php echo esc_html( $display ); ?></time>
</div>
</header>
</article>توضیح: در این نمونه، ابتدا تاریخ ISO برای ویژگی datetime و سپس نمایش محتوایی ذخیره میشود. این روش هم از نظر سئو و هم از نظر کارایی مناسب است.
نتیجهگیری
تابع get_the_date() ابزار ساده و قدرتمندی برای کنترل نمایش تاریخ در قالبهای وردپرس است. با ترکیب صحیح فرمتها، توابع کمکی مثل get_post_time() و توجه به امنیت خروجی میتوانید تاریخها را بهصورت خوانا، سازگار با موتورهای جستجو و در هر تقویمی که نیاز دارید، نمایش دهید. برای تغییر تقویم به جلالی یا هر تقویم دلخواه از فیلترها استفاده کنید تا افزونهها و قابلیتهای قالب قابل توسعه باقی بمانند.
آیا این مطلب برای شما مفید بود ؟




