'Prepare To Print Date',
'in_print_date' => 'In Print Date',
'external_ref_ord_date' => 'External Order Date',
'external_ref_ord_delivered' => 'External Order Delivered',
);
private $text_fields = array(
'external_ref_ord_no' => 'External Order Number',
);
public function __construct() {
add_action('woocommerce_admin_order_data_after_order_details', array($this, 'display_custom_order_fields'));
add_action('woocommerce_process_shop_order_meta', array($this, 'save_custom_order_fields'));
}
public function display_custom_order_fields($order) {
?>
'to_print_date',
'label' => __('Prepare To Print Date', 'studiou-wc-ord-print-statuses'),
'type' => 'datetime-local',
'value' => $this->mysql_to_datetime_local($order->get_meta('to_print_date')),
'wrapper_class' => 'form-field-wide',
));
woocommerce_wp_text_input(array(
'id' => 'in_print_date',
'label' => __('In Print Date', 'studiou-wc-ord-print-statuses'),
'type' => 'datetime-local',
'value' => $this->mysql_to_datetime_local($order->get_meta('in_print_date')),
'wrapper_class' => 'form-field-wide',
));
woocommerce_wp_text_input(array(
'id' => 'external_ref_ord_no',
'label' => __('External Order Number', 'studiou-wc-ord-print-statuses'),
'value' => $order->get_meta('external_ref_ord_no'),
'wrapper_class' => 'form-field-wide',
));
woocommerce_wp_text_input(array(
'id' => 'external_ref_ord_date',
'label' => __('External Order Date', 'studiou-wc-ord-print-statuses'),
'type' => 'datetime-local',
'value' => $this->mysql_to_datetime_local($order->get_meta('external_ref_ord_date')),
'wrapper_class' => 'form-field-wide',
));
woocommerce_wp_text_input(array(
'id' => 'external_ref_ord_delivered',
'label' => __('External Order Delivered', 'studiou-wc-ord-print-statuses'),
'type' => 'datetime-local',
'value' => $this->mysql_to_datetime_local($order->get_meta('external_ref_ord_delivered')),
'wrapper_class' => 'form-field-wide',
));
?>
datetime_fields) as $field) {
if (isset($_POST[$field])) {
$order->update_meta_data($field, $this->datetime_local_to_mysql($_POST[$field]));
}
}
foreach (array_keys($this->text_fields) as $field) {
if (isset($_POST[$field])) {
$order->update_meta_data($field, sanitize_text_field(wp_unslash($_POST[$field])));
}
}
$order->save();
}
private function mysql_to_datetime_local($value) {
if (empty($value)) {
return '';
}
$timestamp = strtotime($value);
return $timestamp ? date('Y-m-d\TH:i', $timestamp) : '';
}
private function datetime_local_to_mysql($value) {
$value = sanitize_text_field(wp_unslash($value));
if ($value === '') {
return '';
}
$timestamp = strtotime($value);
return $timestamp ? date('Y-m-d H:i:s', $timestamp) : '';
}
}