Попробуйте следующее, так как ваш код ничего не сохраняет в базе данных, поскольку возвращает отформатированное значение, это неправильный путь в хуке действия.
Хук действия woocommerce_checkout_create_order
- действительно лучшая альтернативаwoocommerce_checkout_update_order_meta
hook…
Я повторно использовал ваш код форматирования в следующей перехваченной функции:
add_action( 'woocommerce_checkout_create_order', 'additional_hidden_checkout_field_save', 20, 2 );
function additional_hidden_checkout_field_save( $order, $data ) {
if( ! isset($data['billing_phone']) ) return;
if( ! empty($data['billing_phone']) ){
$phone = str_replace([' ','-','_'],['','',''], $data['billing_phone']);
$phone = ltrim(ltrim($phone, '0'),'+');
$formatted_phone = strlen($phone) <= 11 ? '92' . ltrim($phone, 0) : $phone;
// Set the formatted billing phone for the order
$order->set_billing_phone( $formatted_phone );
}
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы).проверено и работает.