คำถาม สวัสดีครับ ขอสอบถามปลั๊กอินครับ
ความต้องการคืออยากให้มันคำนวณเวลาให้เองครับ เช่นผมมีข้อมูลระยะเวลาก่อสร้าง
– ระยะเวลาก่อสร้างตามสัญญา 720 วัน
– ดำเนินงานก่อสร้างมาแล้ว 59 วัน (คิดเป็นร้อยละ 8.19 ของระยะเวลาก่อสร้างทั้งหมด)
– คงเหลือระยะเวลาก่อสร้าง 661 วัน (คิดเป็นร้อยละ 91.81 ของระยะเวลาก่อสร้างทั้งหมด)
เราใส่วันเริ่มและวันสิ้นสุด แล้วมันจะคำนวณวันที่ผ่านมาให้เองทุกวัน แบบนี้ต้องใช้ปลั๊กอินอะไรครับ
ตอบ ถ้าหาคงจะนาน เขียน code ให้เลย
ส่วนนี้เอาไปไว้ใน functions.php ครับ
function fn_structiondate( $atts ){
$start_date = new DateTime( $atts['startdate'] );
$end_date = new DateTime( $atts['enddate'] );
$current_date = new DateTime();
$total_date = $end_date->diff($start_date)->format("%a");
if( $current_date < $start_date ){
$passed_date = $next_date = 0;
}else if( $current_date > $start_date and $current_date < $end_date ){
$passed_date = $current_date->diff($start_date)->format("%a");
$next_date = $total_date - $passed_date;
}else{
$next_date = $total_date;
$passed_date = $total_date;
}
$output = '';
$output .= 'ระยะเวลา '.$atts['startdate'].' - '.$atts['enddate'].'<br>';
$output .= 'ระยะเวลาก่อสร้างตามสัญญา '.$total_date.' วัน'.'<br>';
$output .= 'ดำเนินงานก่อสร้างมาแล้ว '.$passed_date.' วัน'.'<br>';
$output .= '(คิดเป็นร้อยละ '.round(($passed_date/$total_date)*100,2).' ของระยะเวลาก่อสร้างทั้งหมด)'.'<br>';
$output .= 'คงเหลือระยะเวลาก่อสร้าง '.$next_date.' วัน'.'<br>';
$output .= '(คิดเป็นร้อยละ '.round(($next_date/$total_date)*100,2).' ของระยะเวลาก่อสร้างทั้งหมด)'.'<br>';
return $output;
}
add_shortcode( 'structiondate', 'fn_structiondate' );
ส่วนการเรียกใช้ ก็ใส่ในเว็บปกติ
[structiondate startdate="2018-04-10" enddate="2018-04-30"]
อีกแบบ ด้วยความคุ้นเคย อยากใช้ พศ ก็แก้ไขนิดหนอ่ยครับ โดยการเปลี่ยน ปี พศ เป็น คศ แล้วเอาค่าไปคำนวนเหมือนเดิม
function fn_structiondate( $atts ){
$startdate_arr = explode("-", $atts['startdate']);
$enddate_arr = explode("-", $atts['enddate']);
$start_date = new DateTime( ($startdate_arr[2]-543).'-'.$startdate_arr[1].'-'.$startdate_arr[0] );
$end_date = new DateTime( ($enddate_arr[2]-543).'-'.$enddate_arr[1].'-'.$enddate_arr[0] );
$current_date = new DateTime();
$total_date = $end_date->diff($start_date)->format("%a");
if( $current_date < $start_date ){
$passed_date = $next_date = 0;
}else if( $current_date > $start_date and $current_date < $end_date ){
$passed_date = $current_date->diff($start_date)->format("%a");
$next_date = $total_date - $passed_date;
}else{
$next_date = $total_date;
$passed_date = $total_date;
}
$output = '';
$output .= 'ระยะเวลา '.$atts['startdate'].' - '.$atts['enddate'].'<br>';
$output .= 'ระยะเวลาก่อสร้างตามสัญญา '.$total_date.' วัน'.'<br>';
$output .= 'ดำเนินงานก่อสร้างมาแล้ว '.$passed_date.' วัน'.'<br>';
$output .= '(คิดเป็นร้อยละ '.round(($passed_date/$total_date)*100,2).' ของระยะเวลาก่อสร้างทั้งหมด)'.'<br>';
$output .= 'คงเหลือระยะเวลาก่อสร้าง '.$next_date.' วัน'.'<br>';
$output .= '(คิดเป็นร้อยละ '.round(($next_date/$total_date)*100,2).' ของระยะเวลาก่อสร้างทั้งหมด)'.'<br>';
return $output;
}
add_shortcode( 'structiondate', 'fn_structiondate' );
ส่วนการเรียกใช้ ก็ใส่ในเว็บปกติ วว-ดด-ปปปป
[structiondate startdate="10-04-2561" enddate="30-04-2561"]
