WooCommerce: Cómo desactivar o hacer de solo lectura campos de la página de editar cuenta

Si quieres quitar, desactivar o hacer que ciertos campos de la página de WooCommerce de editar cuenta sean de solo lectura aquí te explico cómo hacerlo fácilmente.

Cómo hacer de solo lectura campos de la página de editar cuenta

Si quieres que aparezcan ciertos campos pero que no se puedan modificar después de que el cliente añadió sus datos inicialmente, o solo quieres poder modificarlos tú en la administración, sea por el motivo que sea, puedes hacerlo con un código como este:

//Campos solo lectura en editar cuenta
add_filter( 'woocommerce_billing_fields', 'readonly_billing_account_fields', 25, 1 );
function readonly_billing_account_fields ( $billing_fields ) {
    // Solo la dirección de facturación para usuarios conectados
    if( is_user_logged_in() && is_account_page() ){

        $readonly = ['readonly' => 'readonly'];

        $billing_fields['billing_first_name']['custom_attributes'] = $readonly;
        $billing_fields['billing_last_name']['custom_attributes'] = $readonly;
        $billing_fields['billing_email']['custom_attributes'] = $readonly;
    }
    return $billing_fields;
}

En este ejemplo hemos hecho de solo lectura los campos de nombre, apellidos y correo electrónico.

El código lo puedes añadir al archivo functions.php del tema activo o a tu plugin para personalizaciones.

Cómo ocultar campos de la página de editar cuenta

Si directamente prefieres que no se muestren esos campos, los mismos que en el ejemplo anterior, el código sería de este otro modo:

//Ocultar campos de editar cuenta
add_filter( 'woocommerce_billing_fields', 'remove_billing_account_fields', 25, 1 );
function remove_billing_account_fields ( $billing_fields ) {
    // Solo la dirección de facturación para usuarios conectados
    if( is_user_logged_in() && is_account_page() ){
        unset($billing_fields['billing_first_name']);
        unset($billing_fields['billing_last_name']);
        unset($billing_fields['billing_email']);
    }
    return $billing_fields;
}

Otro posible código para conseguir lo mismo, algo más sencillo, sería este:

//Ocultar campos de editar cuenta
function my_remove_checkout_fields($fields) {
    unset( $fields ['billing'] ['billing_first_name'] );
    unset( $fields ['billing'] ['billing_last_name'] );
    unset( $fields ['billing'] ['billing_email'] );

    // Any other fields you want to unset...

    return $fields;
}

add_filter( 'woocommerce_checkout_fields', 'my_remove_checkout_fields' );

Fuente y más documentación y ejemplos aquí.

La entrada WooCommerce: Cómo desactivar o hacer de solo lectura campos de la página de editar cuenta la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.