2017-02-18 3 views
2

私はWooCommerceベースのストアを構築しています。私はポストコードのリストを持っていますが、それぞれに異なる送料が配送ゾーンを介して添付されています(一部は無料配送、一部は定額)。チェックアウトをカスタムドロップダウンメニューにカスタマイズする

お客様がチェックアウトページに行くと、入力フィールドに郵便番号を入力する必要があります。郵便番号によっては、注文のプレビューに異なる配送合計(無料または定額)が表示されます。ここで

は、入力フィールドがclass-wc-countries.phpでどのように見えるかです:

public function get_default_address_fields() { 
    $fields = array(
    'postcode' => array(
      'label'  => __('Postcode/ZIP', 'woocommerce'), 
      'required'  => true, 
      'class'  => array('form-row-first', 'address-field'), 
      'clear'  => true, 
      'validate'  => array('postcode'), 
      'autocomplete' => 'postal-code', 
     ), 
    ); 

しかし、私がやりたいことは、ドロップダウンメニューには、このフィールドをオンにするので、顧客はちょうど彼の郵便番号を選択することができますオプションではなく、入力します。

私はそれをドロップダウンにすることができましたが、オプションを選択すると、入力フィールドと同じように出荷合計が変更されないようです。ここで

は、私がやったことだ:

public function get_default_address_fields() { 
    $fields = array(
     'postcode' => array(
      'label'  => __('Postcode/ZIP', 'woocommerce'), 
      'required'  => true, 
      'class'  => array('form-row-first', 'address-field'), 
      'clear'  => true, 
      'validate'  => array('postcode'), 
      'autocomplete' => 'postal-code', 
      'type' => 'select', 
      'options' => array(
           'opt1' => "001122", "112200", "334400") 
     ), 
    ); 

しかし、これは動作しません。

何か不足していますか?
これらのドロップダウンオプションで配送合計が変更されるようにするにはどうすればよいですか?

おかげ

+0

最後に、[状態]フィールドをドロップダウンメニューとして使用して解決しました。 woocommerce functions.phpに私の郵便番号を置いています(ウェブサイトのAdd/Modify Statesページからコードを取得しました)。それから私は新しい国を作成しました:私の国 - 州(郵便番号)、そしてそれらに定額/無料配送オプションを与えました。まったく新しいドロップダウンメニューを書くよりもはるかに簡単です(Loicは既に言っています - それは複雑な開発です) – rb1989

答えて

0

これは、あなたの質問に非常に部分的に答えると、あなたにチェックアウトフィールドをカスタマイズする方法を示します。あなたはWoocommerceを更新すると、推奨されていない起こっているたびにeverithing失うことになるように、コアファイルを上書き

は、本当に何かではありません。 (請求および出荷アドレス、デフォルトのフィールドをカスタマイズする場合)

  • woocommerce_default_address_fields:最初にあなたがその2つのフィルターフックの一つに夢中にカスタム関数を使用する必要があり、きれいな方法でチェックアウトフィールドを上書きする

  • woocommerce_checkout_fields(請求または発送先住所フィールドおよびその他のフィールドをカスタマイズする場合)。

関連公式ドキュメント:Customizing checkout fields using actions and filters

だからここに私が最初にフックを選択している、と私はあなたのポストコード配列を修正しています。あなたはそれを取得します:いずれかでも

add_filter('woocommerce_default_address_fields' , 'custom_override_default_postcode_field'); 
function custom_override_default_postcode_field($address_fields) { 
    // Your postcodes array 
    $postcode_array = array(
     'opt1' => "001122", 
     'opt2' => "112200", 
     'opt3' => "334400" 
    ); 
    $address_fields['postcode']['type'] = 'select'; 
    $address_fields['postcode']['options'] = $postcode_array; 

    return $address_fields; 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルに行くか:ここで

enter image description here

は、機能とは、コードをテストしたということですプラグインファイル。ポストコードを選択するよう

ライブフロントエンドイベントである、あなたは何をしたいかを達成するために、いくつかのリモートPHP関数で複雑なJavaScript/Ajaxのスクリプトを使用する必要がある、となり、これはあります実際の開発...これは設定にもよりますが、チェックアウトページですでに動作しているwoocommerce ajaxスクリプトがあるので、扱いが複雑です。

関連する問題