cart_contents as $key => $value) { $event_id = array_key_exists('event_id', $value) ? $value['event_id'] : 0; if (get_post_type($event_id) == 'mep_events') { $event_total_price = $value['event_tp']; $value['data']->set_price($event_total_price); $value['data']->set_regular_price($event_total_price); $value['data']->set_sale_price($event_total_price); $value['data']->set_sold_individually('yes'); $value['data']->get_price(); } } } /** * After update the price now need to show user what they selected and the Price details, the below fuunction is for that, Its showing the details into the cart below the event name. */ function mep_display_custom_fields_text_cart($item_data, $cart_item) { $mep_events_extra_prices = array_key_exists('event_extra_option', $cart_item) ? $cart_item['event_extra_option'] : array(); //$cart_item['event_extra_option']; $eid = array_key_exists('event_id', $cart_item) ? $cart_item['event_id'] : 0; //$cart_item['event_id']; if (get_post_type($eid) == 'mep_events') { $hide_location_status = mep_get_option('mep_hide_location_from_order_page', 'general_setting_sec', 'no'); $hide_date_status = mep_get_option('mep_hide_date_from_order_page', 'general_setting_sec', 'no'); $user_info = $cart_item['event_user_info']; $ticket_type_arr = $cart_item['event_ticket_info']; $event_extra_service = $cart_item['event_extra_service']; $event_recurring_date = $cart_item['event_recurring_date']; $recurring = get_post_meta($eid, 'mep_enable_recurring', true) ? get_post_meta($eid, 'mep_enable_recurring', true) : 'no'; echo ""; } return $item_data; } add_filter('woocommerce_get_item_data', 'mep_display_custom_fields_text_cart', 90, 2); /** * Now before placing the order we need to check seats are available or not, the below function doing this task its validate the user selected seat numbers are available or not. */ add_action('woocommerce_after_checkout_validation', 'mep_checkout_validation'); function mep_checkout_validation($posted) { global $woocommerce; $items = $woocommerce->cart->get_cart(); foreach ($items as $item => $values) { $event_id = array_key_exists('event_id', $values) ? $values['event_id'] : 0; // $values['event_id']; if (get_post_type($event_id) == 'mep_events') { $total_seat = mep_event_total_seat($event_id, 'total'); $total_resv = mep_event_total_seat($event_id, 'resv'); $total_sold = mep_ticket_sold($event_id); $total_left = $total_seat - ($total_sold + $total_resv); $event_validate_info = $values['event_validate_info'] ? $values['event_validate_info'] : array(); $ee = 0; if (is_array($event_validate_info) && sizeof($event_validate_info) > 0) { foreach ($event_validate_info as $inf) { $ee = $ee + $inf['validation_ticket_qty']; } } if ($ee > $total_left) { $event = get_the_title($event_id); wc_add_notice(__("Sorry, Seats are not available in $event, Available Seats $total_left but you selected $ee", 'mage-eventpress'), 'error'); } } } } /** * The Final function for cart handleing, If everything is fine after user hit the place order button then the below function will send the order data into the next hook for order processing and save to order meta data. */ function mep_add_custom_fields_text_to_order_items($item, $cart_item_key, $values, $order) { $eid = array_key_exists('event_id', $values) ? $values['event_id'] : 0; //$values['event_id']; if (get_post_type($eid) == 'mep_events') { $mep_events_extra_prices = $values['event_extra_option']; $cart_location = $values['event_cart_location']; $event_extra_service = $values['event_extra_service']; $ticket_type_arr = $values['event_ticket_info']; $cart_date = $values['event_cart_date']; $form_position = mep_get_option('mep_user_form_position', 'general_attendee_sec', 'details_page'); $event_user_info = $form_position == 'details_page' ? $values['event_user_info'] : mep_save_attendee_info_into_cart($eid); $recurring = get_post_meta($eid, 'mep_enable_recurring', true) ? get_post_meta($eid, 'mep_enable_recurring', true) : 'no'; if ($recurring == 'yes') { if (is_array($ticket_type_arr) && sizeof($ticket_type_arr) > 0) { foreach ($ticket_type_arr as $_event_recurring_date) { $item->add_meta_data('Date', get_mep_datetime($_event_recurring_date['event_date'], 'date-time-text')); } } } else { $item->add_meta_data('Date',$cart_date); } if (is_array($ticket_type_arr) && sizeof($ticket_type_arr) > 0) { foreach ($ticket_type_arr as $ticket) { $ticket_type_name = $ticket['ticket_name'] . " - " . wc_price($ticket['ticket_price']) . ' x ' . $ticket['ticket_qty'] . ' = '; $ticket_type_val = wc_price($ticket['ticket_price'] * $ticket['ticket_qty']); $item->add_meta_data($ticket_type_name, $ticket_type_val); } } if (is_array($event_extra_service) && sizeof($event_extra_service) > 0) { foreach ($event_extra_service as $extra_service) { $service_type_name = $extra_service['service_name'] . " - " . wc_price($extra_service['service_price']) . ' x ' . $extra_service['service_qty'] . ' = '; $service_type_val = wc_price($extra_service['service_price'] * $extra_service['service_qty']); $item->add_meta_data($service_type_name, $service_type_val); } } $item->add_meta_data('Location', $cart_location); $item->add_meta_data('_event_ticket_info', $ticket_type_arr); $item->add_meta_data('_event_user_info', $event_user_info); $item->add_meta_data('_event_service_info', $mep_events_extra_prices); $item->add_meta_data('event_id', $eid); $item->add_meta_data('_product_id', $eid); $item->add_meta_data('_event_extra_service', $event_extra_service); } } add_action('woocommerce_checkout_create_order_line_item', 'mep_add_custom_fields_text_to_order_items', 90, 4);