wp-persian / wp-jalali

Development repository for wp-jalali
https://wordpress.org/plugins/wp-jalali/
25 stars 14 forks source link

مشکل تاریخ برای تگ datetime #41

Open DediData opened 7 years ago

DediData commented 7 years ago

سلام برای برخی صفات تگ ها، مانند datetime باید تاریخ به میلادی چاپ بشه، در غیر اینصورت خروجی اچ تی ام ال غیر استاندارد میشه و موتور های جستجو هم نمی توانند به درستی ماکرودیتا ها رو تشخیص بدهند. مثل قالب دوهزار و هفده

مثال زیر:

$time_string = '<time class="entry-date published updated" title="'. __('Posted on', 'parsmizban') .'" data-toggle="tooltip" data-placement="bottom" datetime="%1$s">%2$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
    $time_string = '<time class="entry-date published" title="'. __('Posted on', 'parsmizban') .'" data-toggle="tooltip" data-placement="bottom" datetime="%1$s">%2$s</time> <i class="fa fa-pencil fa-lg" aria-hidden="true"  title="' . __('Updated on', 'parsmizban') .'" data-toggle="tooltip" data-placement="bottom"></i> <time class="updated" title="' . __('Updated on', 'parsmizban') .'" data-toggle="tooltip" data-placement="bottom" datetime="%3$s">%4$s</time>';
}

$time_string = sprintf( $time_string,
    get_the_date( DATE_W3C ),
    get_the_date(),
    get_the_modified_date( DATE_W3C ),
    get_the_modified_date()
);

راه کار پیشنهادی شما چیست ؟

MR-Mostafa commented 6 years ago

حالت تبدیل اتوماتیک تاریخ میلادی به شمسی رو از تنظیمات افزونه غیرفعال کنید و هر جا نیاز به تاریخ شمسی دارید از تابع jdate استفاده کنید. البته این تابع فقط تاریخ جاری رو نشون می‌ده نه تاریخ انتشار پست رو. مثلا:

<time class="entry-date published">
    <?php echo jdate('d F Y'); ?>
</time>

توجه داشته باشید که برای استفاده از تابع jdate حتما باید افزونه جلالی فعال باشد. پیشنهاد می شود، قبل از استفاده، در دسترس بودن تابع را بررسی نمایید:

function check_jdate_active(){
    $greg_date = get_the_date('d F Y'); /* تاریخ پست رو می‌گیره*/
    $timestamp = strtotime($greg_date); /* به timestamp  تبدیل می‌کنه*/
    if ( function_exists('jdate') ) {
        echo jdate('d F Y',$timestamp); /* تاریخ میلادی رو به شمسی تبدیل می‌کنه*/
    } else {
        echo $greg_date;
    }
}

نمایش تاریخ ارسال مطلب:

<time class="entry-date published" datetime="<?php echo get_the_date('c'); ?>">
    <?php check_jdate_active(); ?>
</time>