kootlas

کمک در تغییر توابع تاریخ

9 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

سلام

من میخوام توابع تاریخ کدهای ضمیمه شده رو از میلادی به شمسی تغییر بدم؛ کسی میتونه کمکم کنه؟


public function wpsd_getting_countdown_script($date) {

$date = strtotime($date);

return "<script type='text/javascript'>

var year='".date('Y',$date)."';

var month='".date('m',$date)."';

var day='".date('d',$date)."';

var hour='".date('H',$date)."';

var minute='".date('i',$date)."';

var dealstimeflag = '1';

var currenttime = '".date('F d, Y H:i:s', time())."';

var today = new Date(currenttime);

</script>";
}
/**
* Return Start Date
*
* Handles to return start date
*
* @package WooCommerce WP Social Deals
* @since 1.0.0
*/
public function wpsd_get_start_date( $post_id ) {

$product_type = $this->wpsd_get_product_type( $post_id );
if( strtolower($product_type) == 'variable' || strtolower($product_type) == 'grouped' ) { // check product type is variable or grouped

$start_date = get_post_meta( $post_id, '_wpsd_start_date', true );

} else {

$start_date = get_post_meta( $post_id, '_sale_price_dates_from', true );

}
$start_date = !empty($start_date) ? date_i18n( 'Y-m-d H:i:s', $start_date ) : '';

return $start_date;
}

/**
* Return End Date
*
* Handles to return end date
*
* @package WooCommerce WP Social Deals
* @since 1.0.0
*/
public function wpsd_get_end_date( $post_id ) {

$product_type = $this->wpsd_get_product_type( $post_id );
if( strtolower($product_type) == 'variable' || strtolower($product_type) == 'grouped' ) { // check product type is variable or grouped

$end_date = get_post_meta( $post_id, '_wpsd_end_date', true );

} else {

$end_date = get_post_meta( $post_id, '_sale_price_dates_to', true );
}
$end_date = !empty($end_date) ? date_i18n( 'Y-m-d H:i:s', $end_date ) : '';

return $end_date;
}

ویرایش شده در توسط kootlas
0

به اشتراک گذاری این پست


لینک به پست

اگر در وردپرس هست

افزونه wp-parsidate را نصب کنید

سپس تابع parsidate را در کد جایگزین توابع date , date_i18n کنید

2

به اشتراک گذاری این پست


لینک به پست

اگر در وردپرس هست

افزونه wp-parsidate را نصب کنید

سپس تابع parsidate را در کد جایگزین توابع date , date_i18n کنید

بله وردپرس هست

میشه بیتشر توضیح بدید؟ یعنی هر جای date_i18n و date دیدم بنویسم $parsidate ؟

مثلاً تو این جمله:


var day='".date('d',$date)."';

اون .date رو باید جایگزین کنم یا اون $date رو؟

0

به اشتراک گذاری این پست


لینک به پست

توابع رو date برای مثال

$ برای تعریف مغییر هست

2

به اشتراک گذاری این پست


لینک به پست

توابع رو date برای مثال

$ برای تعریف مغییر هست

این کار رو که شما فرمودید انجام دادم بعدش به جای نمایش تاریخ روز و ماه و سال مینویسه NaN یعنی به جای روز مینویسه NaN به جای ماه هم همینو مینویسه به جای سال هم همینو مینویسه

0

به اشتراک گذاری این پست


لینک به پست

بسته پارسی ساز را نصب کردید؟

اگر بله

[/size]
var year='".parsidate('Y',$date)."';

var month='".parsidate('m',$date)."';

var day='".parsidate('d',$date)."';

var hour='".parsidate('H',$date)."';

var minute='".parsidate('i',$date)."';

var dealstimeflag = '1';

var currenttime = '".parsidate('F d, Y H:i:s', time())."';

را در ابتدای کدها تغییر دهید

اگر باز هم مشکل باقی بود دقیقا توضیح بدید کد چه کاری انجام می ده چون به نظرم یک مدت را محاسبه می کنه که در اینصورت شمسی کردنش هم بی دلیله و هم به اینصورت ممکنه تو محاسبه اشتباه کنه

1

به اشتراک گذاری این پست


لینک به پست

ممنون از پاسختون جناب فخار

بگذارید من یه توضیحی بدم خدمتتون که اصلاً این کد دقیقاً چیکار میکنه و از کجا اومده

این کد بخشی از فایل class-wpsd-model.php در افزونه [social deals engine] هست. این افزونه یک افزونه برای ووکامرس هست که کارای مختلفی رو انجام میده که من در اینجا فقط به اون قسمتی که مشکل دارم اشاره میکنم، این افزونه میاد از افزونه ووکامرس تاریخ‌های شروع و پایان فروش ویژه رو میگیره و زمان مانده به اتمام تاریخ پایان فروش ویژه رو نشون میده به عنوان مثال فرض کنید ما تاریخ فروش ویژه رو از 1 مهر تا 30 مهر تعیین کرده باشیم و امروز 20 مهر باشه، خب این افزونه یک زمان شمارشگر معکوس رو نشون میده که توش نوشته شده 10 روز و n ساعت و n دقیقه و n ثانیه به پیان زمان خرید فرصت باقیست.

حالا مشکلش با شمسی رو براتون شرح میدم، ببینید وقتی هیچ افزونه پارسی سازی رو وردپرس شما نصب نباشه، افزونه به درستی کار میکنه، اگر هر کدوم از افزونه‌های پارسی ساز رو نصب کنید(فرقی نمیکنه پارسی دیت یا جلالی) افزونه به جای نشون دادن تاریخ درست، روز و ساعت و دقیقه و ثانیه رو همگی رو صفر نشون میده و در نتیجه لینک خرید هم غیر فعال میشه، حالا اگر در هنگامی که پارسی دیت نصب هست، کدهایی رو که شما دادید بریزیم تو افزونه(یعنی به جای date بنویسیم parsidate) نمایش تاریخ به این صورت میشه:

NaN روز و NaN ساعت و NaN دقیقه و NaN ثانیه

من مدت زیادیه دارم برای اصلاح این مشکل تلاش میکنم اما جواب نمیگیرم، فک میکنم یکی دیگه از راه‌هایی که بشه این مشکل رو برطرف کرد این باشه که کاری کنیم که افزونه‌های پارسی ساز روی قسمت انتخابگر زمان فروش ویژه ووکامرس عمل نکنن و اون قسمت خاص به صورت میلادی باقی بمونه و به صورت میلادی هم در دیتابیس ذخیره بشه. من قسمتی رو که مربوط میشه به انتخابگر تاریخ فروش ویژه ووکامرس قبلاً پیدا کردم، که در اینجا قرار میدم:


// Special Price date range
$sale_price_dates_from = ( $date = get_post_meta( $thepostid, '_sale_price_dates_from', true ) ) ? date_i18n( 'Y-m-d', $date ) : '';
$sale_price_dates_to = ( $date = get_post_meta( $thepostid, '_sale_price_dates_to', true ) ) ? date_i18n( 'Y-m-d', $date ) : '';

اگر بشه این کد رو طوری تغییر داد که افزونه های پارسی ساز روش عمل نکنن، فک میکنم این مشکل حل بشه

شما از هر طریقی بتونید من رو راهنمایی کنید، حالا یاد خود افزونه social deals رو تغییر بدیم یا کد فروش ویژه رو تغییر بدیم من یک دنیا ممنونتون میشم، باور کنید هم به افزونه social deals احتیاج دارم و هم افزونه پارسی دیت و سایتم بدون این دو افزونه فلج هست.

0

به اشتراک گذاری این پست


لینک به پست

:D هورا

خودم درستش کردم دو ماه گیر این مشکل بودم اما حلش کردم، چقد حس خوبیه وقتی برنامه نویس نیستی بتونی چنین مشکلاتی رو حل کنی.

اینجا هم مینویسم که اگه کس دیگه ای هم این مشکلو داشت یاد بگیره

اول باید یکی از فایل های ووکامرس رو در مسیر wp-content/plugins/woocommerce/includes/admin/meta-boxes/class-wc-meta-box-product-data.php ویرایش کرد، بعد از باز کردن فایل مذکور باید کد:


// Special Price date range
$sale_price_dates_from = ( $date = get_post_meta( $thepostid, '_sale_price_dates_from', true ) ) ? date_i18n( 'Y-m-d', $date ) : '';
$sale_price_dates_to = ( $date = get_post_meta( $thepostid, '_sale_price_dates_to', true ) ) ? date_i18n( 'Y-m-d', $date ) : '';

رو با این کد جایگزین کرد:


// Special Price date range
$sale_price_dates_from = ( $date = get_post_meta( $thepostid, '_sale_price_dates_from', true ) ) ? date( 'Y-m-d', $date ) : '';
$sale_price_dates_to = ( $date = get_post_meta( $thepostid, '_sale_price_dates_to', true ) ) ? date( 'Y-m-d', $date ) : '';

با این کار قسمت انتخابگر فروش ویژه ووکامرس دیگه از تاریخ های شمسی پشتیبانی نمیکنه و این در حالیه که سایر قسمتای ووکامرس همچنان شمسی باقی میمونن

قدم بعدی باید کاری کنیم که افزونه social deals هم فقط از تاریخ میلادی تبعیت کنه

به این منظور وارد پوشه مسیر wp-content/plugins/woocommerce_wpsocial_deals/includes میشیم و در اونجا تمام فایل های php رو باید ویرایش کنیم و هر چی که date_i18n دیدیم به date تبدیل کنیم.

تمام شد. به همین سادگی به همین خوشمزگی ^_^

0

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

ایت کد ها رو باید به چه صورت تغییر داد؟


return date_i18n('l, jS F Y');
case '{current_time}':
case '{submit_time}':
return date_i18n('g:i a');

بعد فایل

jquery.ui.datepicker-fa.js

داره که فقط مشکل با سال دارم باید به چه صورت شمسی بهش اضافه بشه


/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */
jQuery(function($) {
$.datepicker.regional['fa'] = {
closeText: 'بستن',
prevText: '<قبلی',
nextText: 'بعدی>',
currentText: 'امروز',
monthNames: [
'فروردين',
'ارديبهشت',
'خرداد',
'تير',
'مرداد',
'شهريور',
'مهر',
'آبان',
'آذر',
'دی',
'بهمن',
'اسفند'
],
monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
dayNames: [
'يکشنبه',
'دوشنبه',
'سه‌شنبه',
'چهارشنبه',
'پنجشنبه',
'جمعه',
'شنبه'
],
dayNamesShort: [
'ی',
'د',
'س',
'چ',
'پ',
'ج',
'ش'
],
dayNamesMin: [
'ی',
'د',
'س',
'چ',
'پ',
'ج',
'ش'
],
weekHeader: 'هف',
dateFormat: 'yy/mm/dd',
firstDay: 6,
isRTL: true,
showMonthAfterYear: false,
yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['fa']);
});

ویرایش شده در توسط Amintab2001
0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری