Problèmes pour ajouter deux nouveaux champs au formulaire “Register”

  • Statut : non résolu
Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #549954
    letudianteeternelle
    Membre
    Initié WordPress
    1 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 4.2.1
    – Version de PHP/MySQL :
    – Thème utilisé : Flatsome
    – Extensions en place :
    – Nom de l’hebergeur : Local
    – Adresse du site :

    Problème(s) rencontré(s) :

    J’ai commencé à utiliser wordpress récemment pour réaliser ma boutique en ligne. Je sais déjà (heureusement) développer en PHP/HTML.
    J’essaye d’ajouter le nom et le prénom dans le formulaire de création de compte. J’ai fait le code suivant pour ça et ça marche très bien (le problème c’est la suite):

    function custom_register_addfields(){
    	?>
    
    	
    	<p class="form-row form-row-first">
    	<label for="reg_billing_first_name"><?php _e( 'Prenom', 'woocommerce' ); ?> <span class="required">*</span></label>
    	<input type="text" class="input-text" name="billing_first_name" id="reg_billing_first_name" value="<?php if ( ! empty( $_POST['billing_first_name'] ) ) esc_attr_e( $_POST['billing_first_name'] ); ?>” />
    	</p>
    
    	<p class="form-row form-row-last">
    	<label for="reg_billing_last_name"><?php _e( 'Nom', 'woocommerce' ); ?> <span class="required">*</span></label>
    	<input type="text" class="input-text" name="billing_last_name" id="reg_billing_last_name" value="<?php if ( ! empty( $_POST['billing_last_name'] ) ) esc_attr_e( $_POST['billing_last_name'] ); ?>” />
    	</p>
    <?php
    } 
    add_action( 'woocommerce_register_form_start', 'custom_register_addfields' ,10,0);

    Maintenant, pour la validation (code ci-dessous), j’ai cette erreur :
    Fatal error: Call to a member function add() on a non-object
    à la ligne où il y a “$validation_errors->add…”

    function custom_register_validatefields( $username, $email,$validation_errors ) {
    	
    	if ( !isset( $_POST[‘billing_first_name’] ) || empty( $_POST[‘billing_first_name’] ) ) {
    		$validation_errors->add( ‘billing_first_name_error’, __( ‘<strong>Error</strong>: First name is required!’, ‘woocommerce’ ) );
    	}
    
    	if ( !isset( $_POST[‘billing_last_name’] ) || empty( $_POST[‘billing_last_name’] ) ) {
    		$validation_errors->add( ‘billing_last_name_error’, __( ‘<strong>Error</strong>: Last name is required!.’, ‘woocommerce’ ) );
    	}
    }
    return $validation_errors;
    }
     add_action( ‘woocommerce_register_post’, ‘custom_register_validatefields’, 10, 3 );

    Pour terminer, le code de sauvegarde des deux champs en base ne marche pas non plus, ci-dessous le code

    function custum_register_savefields( $customer_id) {
    	
    	if ( isset( $_POST[‘billing_first_name’] ) ) {
    		// WordPress default first name field.
    		update_user_meta( $customer_id, ‘first_name’, sanitize_text_field( $_POST[‘billing_first_name’] ) );
    
    		// WooCommerce billing first name.
    		update_user_meta( $customer_id, ‘billing_first_name’, sanitize_text_field( $_POST[‘billing_first_name’] ) );
    	}
    
    	if ( isset( $_POST[‘billing_last_name’] ) ) {
    		// WordPress default last name field.
    		update_user_meta( $customer_id, ‘last_name’, sanitize_text_field( $_POST[‘billing_last_name’] ) );
    
    		// WooCommerce billing last name.
    		update_user_meta( $customer_id, ‘billing_last_name’, sanitize_text_field( $_POST[‘billing_last_name’] ) );
    	}
    
    }
    add_action( ‘woocommerce_created_customer’, ‘custum_register_savefields’ );

    Ai-je loupé quelque chose? Est ce parce que je n’utilise pas les bonnes actions? Je désespère, je vous prie de bien vouloir m’aider.

    Merci d’avance

    [Modérations] Le questionnaire doit rester au début du message, merci d’utiliser les balises codes pour vos codes.

Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.