2017-06-02 19 views
0

チェックアウトページにチェックボックスをプログラムで追加する必要がありますが、「利用条件を受け入れる」のようなチェックボックスは必要ありません。これは値(計算済)を持つチェックボックスであり、チェックされている場合はこの値が合計注文価格に加算されます。Woocommerceチェックアウトページにチェックボックスを追加

私は履歴とメールでこの値を取得する必要もあります。 私はこのコードを持っていますが、この場合、チェックボックスをオンにすると合計に何も追加されません。

/** 
* Add checkbox field to the checkout 
**/ 
add_action('woocommerce_after_order_notes', 'my_custom_checkout_field'); 

function my_custom_checkout_field($checkout) { 

    echo '<div id="my-new-field"><h3>'.__('My Checkbox: ').'</h3>'; 

    woocommerce_form_field('my_checkbox', array(
     'type'   => 'checkbox', 
     'class'   => array('input-checkbox'), 
     'label'   => __('I have read and agreed.'), 
     'required' => true, 
     ), $checkout->get_value('my_checkbox')); 

    echo '</div>'; 
} 


    /** 
    * Process the checkout 
    **/ 
    add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process'); 

    function my_custom_checkout_field_process() { 
     global $woocommerce; 

     // Check if set, if its not set add an error. 
     if (!$_POST['my_checkbox']) 
      $woocommerce->add_error(__('Please agree to my checkbox.')); 
    } 

    /** 
    * Update the order meta with field value 
    **/ 
    add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta'); 

    function my_custom_checkout_field_update_order_meta($order_id) { 
     if ($_POST['my_checkbox']) update_post_meta($order_id, 'My Checkbox', esc_attr($_POST['my_checkbox'])); 
    } 

答えて

1

私はこのコードの一部を使用して、変更しました$woocommerce->add_error(__('Please agree to my checkbox.'));その作業。 WC2.xと多分いくつかの問題 - 私は wc_add_notice(__( '私のチェックボックスに同意してください。')、 'エラー')意味> WC3.0

function my_custom_checkout_field_process() { 
    global $woocommerce; 

    // Check if set, if its not set add an error. 
    if (!$_POST['my_checkbox']) 
     wc_add_notice(__('Please agree to my checkbox.')); 
} 
+0

申し訳ありません。 –

関連する問題