web-dev-qa-db-ja.com

Woocommerce - チェックアウトページでカスタム選択フィールドに保存された値を入力する方法

チェックアウトの郵便番号フィールドをドロップダウンフィールドに変換しました。その作業はうまくいきました。

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

これはdbで更新されつつあり、値は注文請求書に表示されます。今チェックアウトフィールドで選択されたオプションとして郵便番号フィールドのすでに保存された値をどのように表示するでしょうか。例:登録された顧客の名前が以前の注文に基づいて自動的に入力される方法。私はいくつかの機能を試しましたが、安心しませんでした。誰かに親切にアドバイス!

1
Anith

私はちょうど同じような問題を抱えていて、PHPとjQueryの組み合わせでそれを解決しました。

$ stored_valueがDBから取得したもので、#billing_postcodeが選択タグのIDの場合

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

これを "woocommerce_checkout_fields"フィルタに適用する関数の中で使います。

更新1: /もう少し調べたところ、これも実行できることがわかりました。

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

更新2:

私のテーマのfunctions.phpに、私はこれを次のように入れます。

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