Comment réorganiser les champs de facturation dans le modèle WooCommerce Checkout? [fermé]

14

Je crée un formulaire de commande de style madlib à l'aide de Personnalisation des champs de commande à l'aide d'actions et de filtres .

Les champs de facturation du modèle de paiement form-billing.php sont affichés avec cet appel:

<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>

Comment changer l'ordre d'affichage des champs?

L'ordre des champs actuel (par défaut) est le suivant:
prénom
nom de famille
entreprise (cachée pour moi)
ville / ville
code postal
pays
Etat
email
téléphone

Ordre par défaut:

Je veux que les champs soient dans un ordre plus naturel pour les Américains (où je vis), alors:
prénom
nom de famille
entreprise (cachée pour moi)
ville / ville
Etat
code postal
pays
email
téléphone

Comment puis-je le faire au mieux?

    
posée torinagrippa 05.01.2013 - 17:45

3 réponses

5

Merci à Dbranes pour la réponse.

Remplacer:

<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>

Avec:

<?php 
// order the keys for your custom ordering or delete the ones you don't need
$mybillingfields=array(
    "billing_first_name",
    "billing_last_name",
    "billing_company",
    "billing_address_1",
    "billing_address_2",
    "billing_city",
    "billing_state",
    "billing_postcode",
    "billing_country",
    "billing_email",
    "billing_phone",
);
foreach ($mybillingfields as $key) : ?>
<?php woocommerce_form_field( $key, $checkout->checkout_fields['billing'][$key], $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
    
réponse donnée torinagrippa 06.01.2013 - 14:38
28

Vous pouvez faire de même avec functions.php dans votre thème (enfant):

add_filter("woocommerce_checkout_fields", "order_fields");

function order_fields($fields) {

    $order = array(
        "billing_first_name", 
        "billing_last_name", 
        "billing_company", 
        "billing_address_1", 
        "billing_address_2", 
        "billing_postcode", 
        "billing_country", 
        "billing_email", 
        "billing_phone"

    );
    foreach($order as $field)
    {
        $ordered_fields[$field] = $fields["billing"][$field];
    }

    $fields["billing"] = $ordered_fields;
    return $fields;

}
    
réponse donnée Roy Milder 23.12.2013 - 21:10
2

Vous pouvez effectuer une copie dans votre thème et modifier le modèle qui restitue le formulaire de paiement.

Adapté de la documentation du plug-in :

  

Exemple
  Pour remplacer la notification de commande de l'administrateur, copiez: woocommerce/templates/checkout/form-checkout.php
  to
yourtheme/woocommerce/checkout/form-checkout.php

[mise à jour]

Dans ce fichier, juste avant les champs en cours d'impression, il y a cette action crochet: do_action('woocommerce_before_checkout_billing_form', $checkout); .

Il suffit donc d'ajouter cette action dans le functions.php du thème ou dans un plugin personnalisé et de réorganiser les champs de la manière indiquée par le PO dans sa réponse. Pas besoin de remplacer le modèle, ni oui si d'autres personnalisations sont nécessaires.

    
réponse donnée brasofilo 05.01.2013 - 22:54

Lire d'autres questions sur les étiquettes