get( CustomOrdersTableController::class )->custom_orders_table_usage_is_enabled() ? wc_get_page_screen_id( 'shop-order' ) : 'shop_order'; add_meta_box( 'correosoficial_shipment', __('Shipment Tracking', 'correosoficial'), array( $this, 'correos_metabox_orders' ), $screen, 'side', 'high' ); } public function correos_metabox_orders( $post ) { // Check HPOS $order = wc_get_container()->get( CustomOrdersTableController::class )->custom_orders_table_usage_is_enabled() ? $post : wc_get_order($post->ID); $allowed_html = array( 'div' => array( 'class' => true, 'style' => true, ), 'label' => array( 'for' => true, ), 'select' => array( 'id' => true, 'name' => true, 'style' => true, ), 'option' => array( 'value' => true, ), 'input' => array( 'type' => true, 'id' => true, 'class' => true, 'name' => true, 'value' => true, ), 'button' => array( 'type' => true, 'class' => true, 'style' => true, ), ); echo wp_kses($this->getHtml($order->get_id()), $allowed_html); } public function getHtml( $id_order ) { $correosOrder = CorreosOficialOrders::getCorreosOrder((int) $id_order); $provider = ''; $tracking_number = ''; $tracking_link = ''; $tracking_date = ''; $selectedCorreos = ''; $selectedCEX = ''; if (!empty($correosOrder)) { $provider = $correosOrder['carrier_type']; $tracking_date = gmdate('Y-m-d', strtotime($correosOrder['date_add'])); if ($provider === 'CEX') { $tracking_number = $correosOrder['shipping_number']; $tracking_link = str_replace('=@', '=' . $correosOrder['shipping_number'], $correosOrder['url']); $selectedCEX = 'selected'; } else { $shippingNumber = CorreosOficialOrders::getCorreosPackages((int) $id_order); $tracking_number = $shippingNumber[0]['shipping_number']; $tracking_link = str_replace('=@', '=' . $shippingNumber[0]['shipping_number'], $correosOrder['url']); $selectedCorreos = 'selected'; } } $nonce = wp_create_nonce( 'correos-metabox-tracking'); return '
'; } public function save_correos_metabox( $post_id ) { if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } if (!current_user_can('edit_post', $post_id)) { return; } $vars = array(); if (isset($_POST['correos_tracking_nonce'])) { $nonceTracking = sanitize_text_field( $_POST['correos_tracking_nonce'] ); if (wp_verify_nonce($nonceTracking, 'correos-metabox-tracking')) { $vars = $_POST; } } if (isset($vars['correos_provider'])) { $provider = $vars['correos_provider']; $track_number = $vars['correos_tracking_number']; $track_date = $vars['correos_tracking_date']; $this->updateValues($provider, $track_number, $track_date, $post_id); } } public function updateValues( $provider, $track_number, $track_date, $id_order ) { global $wpdb; $basicTable = $wpdb->prefix . 'correos_oficial_orders'; $savedTable = $wpdb->prefix . 'correos_oficial_saved_orders'; $updateOrders = array(); $updateSaved = array(); $condition = array( 'id_order' => (int) $id_order, ); $updateOrders['carrier_type'] = $provider; $updateOrders['date_add'] = $track_date; if ($provider === 'CEX') { $updateOrders['shipping_number'] = $track_number; $updateSaved['exp_number'] = $track_number; } else { $updateSaved['shipping_number'] = $track_number; } $wpdb->update($basicTable, $updateOrders, $condition); $wpdb->update($savedTable, $updateSaved, $condition); } } $class = new CorreosTrackings(); add_filter('woocommerce_locate_template', array( $class, 'correos_email_templates' ), 10, 3); add_action('add_meta_boxes', array( $class, 'add_metabox_in_orders' )); add_action('save_post_shop_order', array( $class, 'save_correos_metabox' ));