a logical error mistake in my code
-
Below is the code Iam using to display 3 custom fields like ‘keywords’, ‘keyword density’ , ‘my field’ and also to send an email along with values for these mentioned custom fields..
Anyway, right now I do not have any problem in getting mail. BUT my problem is related to some logic (or condition) that I used below..
**here is the code:**
/** * Add the field to the checkout **/ add_action('woocommerce_after_order_notes', 'my_custom_checkout_field'); function my_custom_checkout_field( $checkout ) { global $woocommerce; $found = false; //check if product already in cart if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) { foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) { $_product = $values['data']; if ( $_product->id == 209) { // 209 is product id echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>'; woocommerce_form_field( 'my_field_name', array( 'type' => 'checkbox', 'class' => array('my-field-class form-row-wide'), 'label' => __('Fill in this field'), 'placeholder' => __('Enter a number'), ), $checkout->get_value( 'my_field_name' )); echo '</div>'; } if ( $_product->id == 221) { // 221 is product id woocommerce_form_field( 'Keywords', array( 'type' => 'text', 'required' => true, 'class' => array('my-field-class form-row-wide'), 'label' => __('Enter Keywords'), 'placeholder' => __('Please enter keywords'), ), $checkout->get_value( 'Keywords' )); woocommerce_form_field( 'Keyword_Density', array( 'type' => 'text', 'required' => false, 'class' => array('my-field-class form-row-wide'), 'label' => __('Enter Keyword Density'), 'placeholder' => __('Please enter keyword Density'), ), $checkout->get_value( 'Keyword_Density' )); } } } } /** * 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_field_name']) update_post_meta( $order_id, 'My Field', esc_attr($_POST['my_field_name'])); if ($_POST['Keywords']) update_post_meta( $order_id, 'Keywords', esc_attr($_POST['Keywords'])); if ($_POST['Keyword_Density']) update_post_meta( $order_id, 'Keyword_Density', esc_attr($_POST['Keyword_Density'])); } /** * Add the field to order emails **/ add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys'); function my_custom_checkout_field_order_meta_keys( $keys ) { $keys[] = 'My Field'; $keys[] = 'Keywords'; $keys[] = 'Keyword_Density'; return $keys; } /** * 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['Keywords']) $woocommerce->add_error( __('Please enter keywords...') ); }
**FOR MORE INFO: PLEASE CHECK THIS:** https://wcdocs.woothemes.com/snippets/tutorial-customising-checkout-fields-using-hooks-and-filters/ **AND** https://gist.github.com/1604009
PLEASE KINDLY SOMEONE LOOK INTO THIS AND SOLVE MY PROBLEM! (I tried my best to explain clearly!)
EDITED: *in THIS LINK:* https://bestcheapluxuryhotels.com/checkout/ when i selected 2 varieties of same product, then its displaying me 2 keyword fields and 2 keyword_density fields, which I shouldnt get like that.. I should display only 1 keyword field and 1 keyword density field (no matters how many varities i chose for same prdocut).. check this: https://bestcheapluxuryhotels.com/shop/articles-variations-test/ so any idea pls..? (if i rectify this, my problem would be solved)
- The topic ‘a logical error mistake in my code’ is closed to new replies.