Как запретить пользователям редактировать платежный адрес в WooCommerce checkout?
Есть ли способ запретить пользователям редактировать свой платежный адрес на странице оформления заказа?
Я пытаюсь достичь состояния, при котором пользователь может видеть текущий платежный адрес, но не может изменить его, не связавшись с администратором магазина. Пользователь может изменить только адрес доставки заказа. Оба адреса все равно должны быть прикреплены к заказу.
Моим текущим решением было полностью удалить поля с помощью крючка woocommerce_billing_fields
и распечатать платежный адрес поля в виде статического html вместо этого, но тогда платежный адрес вообще не отображается в заказе.
1 answers
Хорошо, я нашел решение после вялого разговора. Можно удалить поля из проверки, отключив их в woocommerce_billing_fields
крючке, а затем повторно добавив значения в заказ из профиля пользователя с помощью крючка woocommerce_checkout_posted_data
.
add_filter( 'woocommerce_checkout_posted_data', 'fill_order_billing_details' );
function fill_order_billing_details( $data ) {
$customer_id = get_current_user_id();
$data['billing_first_name'] = get_user_meta( $customer_id, 'billing_first_name', true );
$data['billing_last_name'] = get_user_meta( $customer_id, 'billing_last_name', true );
$data['billing_company'] = get_user_meta( $customer_id, 'billing_company', true );
$data['billing_country'] = get_user_meta( $customer_id, 'billing_country', true );
$data['billing_address_1'] = get_user_meta( $customer_id, 'billing_address_1', true );
$data['billing_address_2'] = get_user_meta( $customer_id, 'billing_address_2', true );
$data['billing_city'] = get_user_meta( $customer_id, 'billing_city', true );
$data['billing_state'] = get_user_meta( $customer_id, 'billing_state', true );
$data['billing_postcode'] = get_user_meta( $customer_id, 'billing_postcode', true );
$data['billing_phone'] = get_user_meta( $customer_id, 'billing_phone', true );
$data['billing_email'] = get_user_meta( $customer_id, 'billing_email', true );
return $data;
}