class-order-fields-manager.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. // Manages custom order fields.
  3. // visualized
  4. class Order_Fields_Manager {
  5. public function __construct() {
  6. add_action('woocommerce_admin_order_data_after_order_details', array($this, 'display_custom_order_fields'));
  7. add_action('woocommerce_process_shop_order_meta', array($this, 'save_custom_order_fields'));
  8. }
  9. public function display_custom_order_fields($order) {
  10. ?>
  11. <div class="order_data_column">
  12. <h4><?php _e('Print Information', 'studiou-wc-ord-print-statuses'); ?></h4>
  13. <?php
  14. woocommerce_wp_text_input(array(
  15. 'id' => 'to_print_date',
  16. 'label' => __('Prepare To Print Date', 'studiou-wc-ord-print-statuses'),
  17. 'type' => 'datetime-local',
  18. 'value' => $order->get_meta('to_print_date'),
  19. 'wrapper_class' => 'form-field-wide'
  20. ));
  21. woocommerce_wp_text_input(array(
  22. 'id' => 'in_print_date',
  23. 'label' => __('In Print Date', 'studiou-wc-ord-print-statuses'),
  24. 'type' => 'datetime-local',
  25. 'value' => $order->get_meta('in_print_date'),
  26. 'wrapper_class' => 'form-field-wide'
  27. ));
  28. woocommerce_wp_text_input(array(
  29. 'id' => 'external_ref_ord_no',
  30. 'label' => __('External Order Number', 'studiou-wc-ord-print-statuses'),
  31. 'value' => $order->get_meta('external_ref_ord_no'),
  32. 'wrapper_class' => 'form-field-wide'
  33. ));
  34. woocommerce_wp_text_input(array(
  35. 'id' => 'external_ref_ord_delivered',
  36. 'label' => __('External Order Delivered', 'studiou-wc-ord-print-statuses'),
  37. 'type' => 'datetime-local',
  38. 'value' => $order->get_meta('external_ref_ord_delivered'),
  39. 'wrapper_class' => 'form-field-wide'
  40. ));
  41. ?>
  42. </div>
  43. <?php
  44. }
  45. public function save_custom_order_fields($order_id) {
  46. $order = wc_get_order($order_id);
  47. if (isset($_POST['to_print_date'])) {
  48. $order->update_meta_data('to_print_date', sanitize_text_field($_POST['to_print_date']));
  49. }
  50. if (isset($_POST['in_print_date'])) {
  51. $order->update_meta_data('in_print_date', sanitize_text_field($_POST['in_print_date']));
  52. }
  53. if (isset($_POST['external_ref_ord_no'])) {
  54. $order->update_meta_data('external_ref_ord_no', sanitize_text_field($_POST['external_ref_ord_no']));
  55. }
  56. if (isset($_POST['external_ref_ord_delivered'])) {
  57. $order->update_meta_data('external_ref_ord_delivered', sanitize_text_field($_POST['external_ref_ord_delivered']));
  58. }
  59. $order->save();
  60. }
  61. }