تابع get_comment_date در وردپرس
تابع get_comment_date() در وردپرس برای دریافت تاریخ یک دیدگاه (comment) بهصورت فرمتشده استفاده میشود. این تابع متن تاریخ را بازمیگرداند و برخلاف comment_date() آن را چاپ نمیکند، بنابراین برای زمانی مناسب است که بخواهید کنترل بیشتری روی خروجی داشته باشید یا آن را در متغیری ذخیره و بعد پردازش کنید.
سینتکس و پارامترها
get_comment_date( $format = '', $comment = null )توضیح پارامترها:
| پارامتر | نوع | توضیح |
|---|---|---|
| $format | string | فرمت تاریخ مشابه توابع PHP یا فرمت پیشفرض وردپرس (در صورت خالی بودن) |
| $comment | int|object|null | آیدی یا شیء دیدگاه. در صورت null، دیدگاه جاری (global) استفاده میشود. |
مقدار بازگشتی
این تابع یک رشته را بازمیگرداند که حاوی تاریخ فرمتشده است. اگر نیاز دارید مقدار را چاپ کنید از echo get_comment_date() یا از comment_date() استفاده کنید.
مثالهای پایه
<?php
// چاپ تاریخ دیدگاه جاری با فرمت پیشفرض وردپرس
echo get_comment_date();
?>این قطعه، تاریخ دیدگاه فعلی را مطابق تنظیمات «فرمت تاریخ» در تنظیمات وردپرس نمایش میدهد.
<?php
// استفاده از فرمت سفارشی
echo get_comment_date( 'F j, Y' ); // مانند: March 10, 2025
?>در مثال بالا از یک فرمت PHP برای نمایش ماه کامل، روز و سال استفاده شده است.
استفاده از آیدی یا شیء دیدگاه
<?php
// دریافت تاریخ بر اساس آیدی دیدگاه
$comment_date = get_comment_date( '', 123 );
// یا با شیء دیدگاه
$comment_obj = get_comment( 123 );
$comment_date = get_comment_date( 'Y-m-d', $comment_obj );
?>وقتی میخواهید تاریخ دیدگاهی را خارج از حلقه دیدگاهها یا در جایی که دیدگاه جاری تعریف نشده است نمایش دهید، میتوانید آیدی یا شیء دیدگاه را پاس دهید.
نمونه ساختار برای قالب دیدگاه
<li id="comment-<?php comment_ID(); ?>" >
<div class="comment-meta">
<time datetime="<?php echo get_comment_time('c'); ?>">
<?php echo esc_html( get_comment_date() ); ?>
</time>
</div>
<div class="comment-content"><?php comment_text(); ?></div>
</li>در این مثال از تگ <time> برای افزودن مشخصهٔ datetime استفاده شده و خروجی تابع با esc_html() امنسازی شده تا از XSS جلوگیری شود.
بهینهسازی و نکات امنیتی
- همیشه خروجی را قبل از چاپ فرمت کنید، مثلاً با
esc_html()یاesc_attr()هنگام قرار دادن در صفتها. - اگر در حلقهٔ بزرگ دیدگاهها چند بار به زمان عددی (Unix timestamp) نیاز دارید، از
get_comment_time('U')یکبار استفاده کنید و سپس آن را مجدداً تبدیل کنید تا از فراخوانیهای متعدد جلوگیری شود. - توجه کنید که فرمتهای محلی و ترجمهشده را با توجه به سایتهای چندزبانه تنظیم کنید؛ وردپرس تابعهای بینالمللیسازی زمان را پشتیبانی میکند.
مثال پیشرفته: نمایش تاریخ همراه با زمان نسبی
<?php
// نمایش "2 روز پیش" کنار تاریخ کامل
$full_date = get_comment_date( 'j F Y at H:i' );
$time_diff = human_time_diff( get_comment_time('U'), current_time('timestamp') );
echo esc_html( $full_date ) . ' (' . sprintf( __('%s ago', 'text-domain'), $time_diff ) . ')';
?>در این نمونه ابتدا تاریخ کامل نمایش داده میشود و سپس با استفاده از human_time_diff() زمان نسبی به کاربران نشان داده میشود که برای رابط کاربری مدرن مفید است. توجه داشته باشید رشتهٔ «ago» باید برای ترجمه در فایلهای زبان قرار داده شود.
نکات تخصصی و حالات مرزی
- اگر سایت شما از منطقهٔ زمانی (timezone) سفارشی استفاده میکند، استفاده از
get_comment_time('U')و سپسdate_i18n()یاdate()با تنظیمات مناسب کمک میکند تا سازگاری حفظ شود. - مراقب باشید که اگر دیدگاه حذف یا بازیابی شده باشد و شما آیدی را پاس دادهاید، وجود یا عدم وجود دیدگاه را پیشاز فراخوانی بررسی کنید.
- در قالبهایی که cache سطح بالایی دارند، بهتر است تاریخها را در سمت کلاینت با جاوااسکریپت (برای نمایش نسبی) آپدیت کنید تا بار سرور کمتر شود.
نمونه بررسی وجود دیدگاه قبل از نمایش تاریخ
<?php
$comment = get_comment( $comment_id );
if ( $comment ) {
echo esc_html( get_comment_date( '', $comment ) );
} else {
echo '<em>Comment not found</em>';
}
?>این روش از ارورهای احتمالی جلوگیری میکند و زمانی که آیدی نامعتبر باشد پیام مناسبی نمایش میدهد.
خلاصه
تابع get_comment_date() ابزاری ساده ولی انعطافپذیر برای گرفتن تاریخ دیدگاهها در وردپرس است. با استفاده از پارامتر فرمت و پارامتر دیدگاه میتوان خروجیهای متنوعی ساخت. با رعایت نکات امنیتی (مثل فرار دادهها) و بهینهسازی در حلقههای بزرگ، میتوانید تجربهٔ کاربری و عملکرد را بهبود بخشید.
آیا این مطلب برای شما مفید بود ؟




