Chargement...

Champs personnalisés pour woocommerce (Siret, CGV)

ajout champ personnalisé commande woocommerce condition générales de ventes siret

Comment ajouter un checkbox de validation des CGV à Woocommerce

Comme vous tous qui venez de débarquer sur ce pots, je trouve cela hallucinant que Woocommerce ne propose pas la validation des conditions générales de ventes d’un site ecommerce.
Vous devrez le coder vous même, mais pas de panique, on est là pour vous aider !
Afin d’être complet sur les besoin de chacun, nous allons traiter dans ce tuto l’ajout du checkbox des CGV mais également de l’ajout d’un champ texte permettant par exemple à l’e-commerçant de demander à son client pro, son numéro Siret permettant de justifier qu’il est bien une entreprise.
Nous verrons également la manière d’insérer un select dans le processus de commande pour ceux d’entre vous qui aurait besoin d’un select plutôt que d’un input ou un checkbox..

Le checkbox pour cocher les conditions générales de ventes

On demande le numéro Siret et la validation des CGV pour valider la commande

ajout champ personnalisé commande woocommerce condition générales de ventes siret
On crée d’abord l’élément du formulaire
add_action( ‘woocommerce_review_order_before_submit’, ‘bbloomer_add_checkout_privacy_policy’, 9 );
function bbloomer_add_checkout_privacy_policy() {
woocommerce_form_field( ‘validCGV’, array(
‘type’ => ‘checkbox’,
‘class’ => array(‘input-checkbox’),
‘label’ => __(‘J\’ai lu et j\’accepte les conditions générales de vente’),
‘required’ => true,
), $checked );
//ici on présente un lien menant au CGV
echo ‘Voir les conditions générales de vente

‘;
}

Nous allons ensuite le rendre obligatoire pour la validation de la commande
// Alerte si la case n’est aps cochée à l’envoi du form
add_action( ‘woocommerce_checkout_process’, ‘bbloomer_not_approved_privacy’ );
function bbloomer_not_approved_privacy() {
if ( ! (int) isset( $_POST[‘validCGV’] ) ) {
wc_add_notice( __( ‘Merci de valider les conditions générales de vente.’ ), ‘error’ );
}
}
Et voila le travail !
Dans ce cas aucune information n’a besoin d’être insérée en base de données ni retranscrite sur l’espace de commande de woocommerce

Création d’un champs personnalisé pour le numéro Siret dans le process de commande woocommerce

On crée d’abord le champs de texte dans le formulaire
add_action( ‘woocommerce_after_order_notes’, ‘my_custom_checkout_field’ );
function my_custom_checkout_field( $checkout ) {
echo ‘<div id= »my_custom_checkout_field »><h3>’ . __(‘information entreprise’) . ‘</h3>’;
woocommerce_form_field( ‘siretField’, array(
‘type’ => ‘text’,
‘class’ => array(‘my-field-class form-row-wide’),
‘label’ => __(‘Numéro de Siret’),
‘placeholder’ => __(‘siret’),
), $checkout->get_value( ‘siretField’ ));
}
Nous allons ensuite le rendre obligatoire pour la validation de la commande
add_action(‘woocommerce_checkout_process’, ‘my_custom_checkout_field_process’);
function my_custom_checkout_field_process() {
if  ( ! $_POST[‘siretField’] )
wc_add_notice( __( ‘Merci de renseigner votre numéro de Siret.’ ), ‘error’ );
}
On enregistre la valeur en base de données pour pouvoir l’affichée dans l’espace de commande de notre ecommerce
add_action( ‘woocommerce_checkout_update_order_meta’, ‘my_custom_checkout_field_update_order_meta’ );
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST[‘siretField’] ) ) {
update_post_meta( $order_id, ‘Siret’, sanitize_text_field( $_POST[‘siretField’] ) );
}
}
et enfin on va cherche la valeur insérée en base de données pour pouvoir l’affichée comme ceci dans notre détail de la commande de woocommerce
add_action( ‘woocommerce_admin_order_data_after_billing_address’, ‘my_custom_checkout_field_display_admin_order_meta’, 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order){
echo ‘<p><strong>’.__(‘Siret’).’:</strong> ‘ . get_post_meta( $order->id, ‘Siret’, true ) . ‘</p>’;
}

Le numéro de siret affiché dans la commande dans l’admin

ajout champ personnalisé commande woocommerce condition générales de ventes siret

Pour insérer un select au formulaire de commande de woocomerce

Il vous suffira de remplacer dans la première étape le code d’insertion du champs de texte par celui du select ci dessous

woocommerce_form_field( ‘fieldx’, array(
‘type’ => ‘select’,
‘class’ => array( ‘wps-drop’ ),
‘label’ => __( ‘Choisissez …’ ),
‘options’ => array(
‘opt1’  => __( ‘opt1’, ‘wps’ ),
‘opt2’ => __( ‘opt2’, ‘wps’ ),
)
),
$checkout->get_value( ‘fieldx’ ));
Voila vous êtes en mesure de développer des prix champs supplémentaire au processus de commande de woocommerce.