Tenemos un sitio web de comercio electrónico en el que no podemos permitir que los usuarios editen su dirección de envío, pero nos gustaría que pudieran almacenar varias direcciones desde un menú desplegable. Usé el siguiente código para hacer que la dirección de envío sea de solo lectura y no editable, pero cuando seleccionan una dirección diferente del menú desplegable, los campos de solo lectura no se actualizan. Probé el atributo deshabilitado que funcionó visualmente, pero necesitamos los datos para PUBLICAR al realizar un pedido. ¿Hay algún trabajo para esto?
jQuery(document).ready(function ($) { $("#shipping_last_name").attr("readonly", true); });/** * Agrega la selección de la libreta de direcciones a la página de pago. * * @since 1.0.0 * * @param array $fields Una matriz de campos de dirección de envío de WooCommerce. * @return array */ public function shipping_address_select_field( $fields ) { if ( is_user_logged_in() ) { $address_book = $this->get_address_book();
$address_selector['address_book'] = array( 'type' => 'select', 'class' => array( 'form-row-wide', 'address_book' ), 'label' => __( 'Address Book', 'woo-address-book' ), 'order' => -1, 'priority' => -1, ); if ( ! empty( $address_book ) && false !== $address_book ) { foreach ( $address_book as $name => $address ) { if ( ! empty( $address[ $name . '_address_1' ] ) ) { $address_selector['address_book']['options'][ $name ] = $this->address_select_label( $address, $name ); } } $address_selector['address_book']['options']['add_new'] = __( 'Add New Address', 'woo-address-book' ); $fields['shipping'] = $address_selector + $fields['shipping']; $fields['shipping']['custom_attributes'] = array('readonly'=>'readonly'); } } return $fields; } /** * Adds the address book select to the checkout page. * * @since 1.0.0 * * @param array $address An array of WooCommerce Shipping Address data. * @param string $name Name of the address field to use. * @return string */ public function address_select_label( $address, $name ) { $label = ''; $address_nickname = get_user_meta( get_current_user_id(), $name . '_address_nickname', true ); if ( $address_nickname ) { $label .= $address_nickname . ': '; } if ( ! empty( $address[ $name . '_first_name' ] ) ) { $label .= $address[ $name . '_first_name' ]; } if ( ! empty( $address[ $name . '_last_name' ] ) ) { if ( ! empty( $label ) ) { $label .= ' '; } $label .= $address[ $name . '_last_name' ]; } if ( ! empty( $address[ $name . '_address_1' ] ) ) { if ( ! empty( $label ) ) { $label .= ', '; } $label .= $address[ $name . '_address_1' ]; } if ( ! empty( $address[ $name . '_city' ] ) ) { if ( ! empty( $label ) ) { $label .= ', '; } $label .= $address[ $name . '_city' ]; } if ( ! empty( $address[ $name . '_state' ] ) ) { if ( ! empty( $label ) ) { $label .= ', '; } $label .= $address[ $name . '_state' ]; } return apply_filters( 'wc_address_book_address_select_label', $label, $address, $name ); }