ویژگی تصویر

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

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

تابع current_time() یکی از توابع مفید وردپرس برای به‌دست آوردن زمان جاری بر اساس تنظیمات وردپرس است. این تابع کمک می‌کند تا زمان‌ها را به صورت محلی (با توجه به timezone تنظیم‌شده در وردپرس) یا به صورت GMT/UTC دریافت کنید و در نمایش، ذخیره یا مقایسهٔ زمان‌ها از آن استفاده کنید.

پارامترها و مقادیر بازگشتی

  • پارامتر اول ($type): رشته‌ای که می‌تواند ‘mysql’، ‘timestamp’ یا هر فرمت مجاز برای تابع date() باشد. اگر ‘mysql’ باشد خروجی به شکل “Y-m-d H:i:s” بازمی‌گردد.
  • پارامتر دوم ($gmt): مقدار بولی که اگر true شود، زمان بر اساس GMT/UTC بازگردانده می‌شود و اگر false باشد زمان محلی وردپرس بازگردانده می‌شود.
  • مقادیر بازگشتی: بر اساس $type ممکن است رشته (مثلاً ‘2025-10-30 14:00:00’) یا عدد صحیح (timestamp) باشد.

تفاوت current_time با time و gmdate

تابع time() و gmdate() از تنظیمات PHP روی سرور استفاده می‌کنند و ممکن است با timezone وردپرس متفاوت باشند. current_time() تضمین می‌کند که زمان با تنظیمات وردپرس هماهنگ باشد (ناظر بر option‌های «Timezone» در پیشخوان) و برای اکثر کاربردهای داخل افزونه/قالب بهتر و ایمن‌تر است.

مثال‌های کاربردی

1) دریافت زمان به فرمت MySQL

$mysql_time = current_time( 'mysql' );
echo $mysql_time; // Example: 2025-10-30 14:00:00

این کد زمان فعلی را بر اساس تنظیمات وردپرس در قالب MySQL برمی‌گرداند. مناسب برای ذخیره در فیلدهای DATETIME در پایگاه‌داده یا درج در postmeta. توجه کنید که به‌طور پیش‌فرض $gmt=false است، یعنی زمان محلی وردپرس بازگردانده می‌شود.

2) گرفتن Timestamp و فرمت کردن با wp_date

$ts = current_time( 'timestamp' ); // integer timestamp (local)
$formatted = wp_date( 'Y-m-d H:i:s', $ts );
echo $formatted;

در این نمونه ابتدا timestamp محلی گرفته می‌شود سپس با استفاده از wp_date (که از timezone وردپرس پشتیبانی می‌کند) فرمت می‌شود. استفاده از wp_date و wp_timezone() در نسخه‌های جدید وردپرس بهترین روش برای نمایش زمان است.

3) گرفتن زمان GMT (UTC)

$gmt_mysql = current_time( 'mysql', true );  // GMT in mysql format
$gmt_ts    = current_time( 'timestamp', true ); // GMT unix timestamp

با قرار دادن پارامتر دوم true، زمان به صورت GMT بازگردانده می‌شود. این حالت برای ذخیرهٔ زمان‌های استاندارد یا مقایسهٔ واحد بین سرورهای مختلف مفید است.

4) استفاده در کوئری‌های wpdb (مثال نگارش امن)

$now = current_time( 'mysql' );
$sql = $wpdb->prepare(
    "SELECT * FROM {$wpdb->prefix}my_table WHERE expire_at > %s",
    $now
);
$rows = $wpdb->get_results( $sql );

در این مثال از current_time(‘mysql’) برای مقایسهٔ ستون DATETIME استفاده شده و با استفاده از $wpdb->prepare از تزریق SQL جلوگیری شده است. همیشه ورودی‌های رشته‌ای تاریخ را با پارامترهای آماده (prepare) بفرستید.

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

  • نمایش تاریخ و زمان پست‌ها یا محتوای سفارشی با توجه به timezone سایت.
  • بررسی انقضاء کوپن‌ها، زمان‌بندی فعالیت‌ها و محدود کردن دسترسی‌ها بر اساس زمان.
  • استفاده در کلیدهای کش (cache keys) که بر اساس روز/ساعت تغییر می‌کنند.
  • استفاده در wp_cron یا زمان‌بندی رخدادهای داخلی افزونه.

نکات فنی و بهترین روش‌ها

  • برای دریافت و نمایش زمان به‌شکل کاربرپسند از wp_date و wp_timezone() استفاده کنید تا هماهنگی کامل با تنظیمات وردپرس حاصل شود.
  • اگر نیاز به ذخیرهٔ زمانی مطمئن بین سرورها دارید، زمان به صورت GMT ذخیره کنید و هنگام نمایش به محلی تبدیل کنید.
  • در عملیات حساس به ثانیه، از current_time(‘timestamp’) استفاده کنید تا عددی برای محاسبات به‌دست آورید.
  • همیشه خروجی را قبل از چاپ در تم یا افزونه با توابع escaping مانند esc_html() فرمت کنید.

مقایسه سریع (جدول)

ورودیخروجیکاربرد
current_time(‘mysql’)Y-m-d H:i:s (local)ذخیره در DATETIME، نمایش ساده
current_time(‘timestamp’)integer (local)محاسبات زمانی، مقایسه‌ها
current_time(‘mysql’, true)Y-m-d H:i:s (GMT)ذخیره استاندارد/مقایسه بین سرورها

تبدیل بین GMT و محلی

$gmt = current_time( 'mysql', true );          // GMT datetime
$local_ts = strtotime( $gmt );                    // تبدیل به timestamp بر پایه GMT
// بهتر: استفاده از get_date_from_gmt یا mysql2date برای تبدیل امن
$local_formatted = get_date_from_gmt( $gmt, 'Y-m-d H:i:s' );

در اینجا نشان داده شد که چگونه می‌توان بین زمان GMT و زمان محلی تبادل انجام داد. تابع get_date_from_gmt برای تبدیل از رشتهٔ GMT به زمان محلی وردپرس مناسب است و نکات مربوط به آفست را رعایت می‌کند.

مثال عملی: بررسی منقضی شدن آگهی

$now = current_time( 'timestamp' );
$expire = (int) get_post_meta( $post_id, 'expire_ts', true );

if ( $expire && $now > $expire ) {
    // آگهی منقضی شده — انجام کارهای مناسب
}

در این مثال با استفاده از timestamp محلی امکان مقایسهٔ سریع و صحیح فراهم می‌شود. ذخیرهٔ expire_ts به صورت timestamp یا mysql توصیه می‌شود و سپس در نمایش یا منطق برنامه تبدیل و استفاده می‌گردد.

خلاصه

تابع current_time() یک ابزار ساده اما حیاتی برای کار با زمان در محیط وردپرس است. با درک پارامترها، تفاوت GMT و زمان محلی و ترکیب آن با توابعی مثل wp_date و get_date_from_gmt می‌توانید زمان‌ها را دقیق، ایمن و مطابق با تنظیمات سایت مدیریت کنید.

در صورتی که به نمونهٔ خاصی از کاربردها نیاز دارید (مثلاً هماهنگی با WooCommerce، WP-Cron یا ذخیرهٔ زمان در جدول سفارشی)، می‌توانم مثال‌های دقیق‌تری برای آن شرایط آماده کنم.

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

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