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' ));