webentwicklung-frage-antwort-db.com.de

Woocommerce - Wie fülle ich ein benutzerdefiniertes Auswahlfeld mit gespeicherten Werten auf der Checkout-Seite auf?

Ich habe das PLZ-Feld im Checkout in ein Dropdown-Feld umgewandelt. Es funktioniert gut.

$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
     ); 

Dies wird in der Datenbank aktualisiert und die Werte werden auf der Auftragsrechnung angezeigt. Wie würde ich nun den bereits gespeicherten Wert des PLZ-Feldes als ausgewählte Option in den Checkout-Feldern anzeigen? Zum Beispiel: Wie der Name für einen registrierten Kunden basierend auf seiner früheren Bestellung automatisch ausgefüllt wird. Ich habe ein paar Funktionen ausprobiert, aber keine Erleichterung. Bitte beraten Sie jemanden!

1
Anith

Ich hatte gerade ein ähnliches Problem und löste es mit einer Kombination aus PHP und jQuery.

Wenn $ saved_value das ist, was Sie aus der Datenbank gezogen haben und #billing_postcode die ID des Select-Tags ist:

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

Ich verwende dies in einer Funktion, die ich auf den Filter "woocommerce_checkout_fields" anwende.

Update 1: Nach ein wenig mehr Recherche habe ich herausgefunden, dass ich das auch einfach machen kann:

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

Update 2:

In functions.php meines Themas habe ich es so eingefügt:

<?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