web-dev-qa-db-fra.com

Woocommerce - Comment renseigner un champ de sélection personnalisé avec des valeurs stockées sur la page de paiement?

J'ai converti le champ du code postal de la caisse en un champ déroulant. Cela fonctionne bien.

$fields['billing']['billing_postcode'] = array(
    'type' => 'select',
    'label'     => __('Locality - Postcode', 'woocommerce'),
    'placeholder'   => _x('Select a locality', 'placeholder', 'woocommerce'),
    'required'  => true,
    'class'     => array('form-row-first'),
    'clear'     => false
     ); 

Ceci est mis à jour dans la base de données et les valeurs sont indiquées sur la facture. Maintenant, comment puis-je afficher la valeur déjà stockée du champ code postal comme option sélectionnée dans les champs de paiement? Par exemple: comment le nom est automatiquement rempli pour un client enregistré en fonction de sa commande antérieure. J'ai essayé quelques fonctions, mais aucun soulagement. Veuillez conseiller quelqu'un!

1
Anith

Je viens d'avoir un problème similaire et résolu avec une combinaison de PHP et jQuery.

Si $ stocké_valeur correspond à ce que vous avez extrait de la base de données et si #billing_postcode correspond à l'id de la balise select:

<?php if ( !empty( $stored_value ) ) { ?>
<script type="text/javascript">
    jQuery(document).ready(function($) {
        $("select#billing_postcode").val( "<?php echo $stored_value; ?>" );
    });
</script>
<?php } ?>

J'utilise ceci dans une fonction que j'applique au filtre "woocommerce_checkout_fields".

Update 1: Après un peu plus de recherches, j'ai découvert que je pouvais aussi faire ceci:

<?php if ( !empty( $stored_value ) ) {
$fields['billing']['billing_postcode']['default'] = $stored_value;
} ?>

Mise à jour 2:

Dans functions.php de mon thème, je l'ai mis comme ceci:

<?php
// Hook in
add_filter( 'woocommerce_checkout_fields' , 'jsm_override_checkout_fields' );

function jsm_override_checkout_fields( $fields ) {

    $stored_value = "something pulled from the DB";

    if ( !empty( $stored_value ) ) {
    $fields['billing']['billing_postcode']['default'] = $stored_value;
    }

    return $fields;
} ?>
1
Jakob Smith