set_defaults(); if ( ! $product->get_id() || ! ( $post_object = get_post( $product->get_id() ) ) || ! in_array( $post_object->post_type, array( 'mep_events', 'product' ) ) ) { // change birds with your post type throw new Exception( __( 'Invalid product.', 'woocommerce' ) ); } $id = $product->get_id(); $product->set_props( array( 'name' => $post_object->post_title, 'slug' => $post_object->post_name, 'date_created' => 0 < $post_object->post_date_gmt ? wc_string_to_timestamp( $post_object->post_date_gmt ) : null, 'date_modified' => 0 < $post_object->post_modified_gmt ? wc_string_to_timestamp( $post_object->post_modified_gmt ) : null, 'status' => $post_object->post_status, 'description' => $post_object->post_content, 'short_description' => $post_object->post_excerpt, 'parent_id' => $post_object->post_parent, 'menu_order' => $post_object->menu_order, 'reviews_allowed' => 'open' === $post_object->comment_status, ) ); $this->read_attributes( $product ); $this->read_downloads( $product ); $this->read_visibility( $product ); $this->read_product_data( $product ); $this->read_extra_data( $product ); $product->set_object_read( true ); } /** * Get the product type based on product ID. * * @since 3.0.0 * @param int $product_id * @return bool|string */ public function get_product_type( $product_id ) { $post_type = get_post_type( $product_id ); if ( 'product_variation' === $post_type ) { return 'variation'; } elseif ( in_array( $post_type, array( 'mep_events', 'product' ) ) ) { // change birds with your post type $terms = get_the_terms( $product_id, 'product_type' ); return ! empty( $terms ) ? sanitize_title( current( $terms )->name ) : 'simple'; } else { return false; } } } add_filter( 'woocommerce_data_stores', 'mep_woocommerce_data_stores' ); function mep_woocommerce_data_stores ( $stores ) { $stores['product'] = 'MEP_Product_Data_Store_CPT'; return $stores; } } else { add_action('admin_notices', 'wc_not_loaded'); } add_action('woocommerce_before_checkout_form', 'mep_displays_cart_products_feature_image'); function mep_displays_cart_products_feature_image() { foreach ( WC()->cart->get_cart() as $cart_item ) { $item = $cart_item['data']; } } // Get user information and save to attendee list after order confirmation add_action( 'woocommerce_order_status_completed_notification', 'mep_set_event_attendee_data' ); function mep_set_event_attendee_data( $order_id ) { if ( ! $order_id ) return; // Getting an instance of the order object $order = wc_get_order( $order_id ); $order_meta = get_post_meta($order_id); # Iterating through each order items (WC_Order_Item_Product objects in WC 3+) foreach ( $order->get_items() as $item_id => $item_values ) { $product_id = $item_values->get_product_id(); $item_data = $item_values->get_data(); $product_id = $item_data['product_id']; $item_quantity = $item_values->get_quantity(); $product = get_page_by_title( $item_data['name'], OBJECT, 'mep_events' ); $event_name = $item_data['name']; $event_id = $product->ID; } $first_name = $order_meta['_billing_first_name'][0]; $last_name = $order_meta['_billing_last_name'][0]; $company_name = $order_meta['_billing_company'][0]; $address_1 = $order_meta['_billing_address_1'][0]; $address_2 = $order_meta['_billing_address_2'][0]; $city = $order_meta['_billing_city'][0]; $state = $order_meta['_billing_state'][0]; $postcode = $order_meta['_billing_postcode'][0]; $country = $order_meta['_billing_country'][0]; $email = $order_meta['_billing_email'][0]; $phone = $order_meta['_billing_phone'][0]; $billing_intotal = $order_meta['_billing_address_index'][0]; $payment_method = $order_meta['_payment_method_title'][0]; // ADD THE FORM INPUT TO $new_post ARRAY $new_post = array( 'post_title' => $first_name." ".$last_name, 'post_content' => '', 'post_category' => array(), // Usable for custom taxonomies too 'tags_input' => array(), 'post_status' => 'publish', // Choose: publish, preview, future, draft, etc. 'post_type' => 'mep_events_attendees' //'post',page' or use a custom post type if you want to ); //SAVE THE POST $pid = wp_insert_post($new_post); $update_fname = update_post_meta( $pid, 'ea_first_name', $first_name); $update_lname = update_post_meta( $pid, 'ea_last_name', $last_name); $update_company = update_post_meta( $pid, 'ea_company_name', $company_name); $update_ad1 = update_post_meta( $pid, 'ea_address_1', $address_1); $update_ad2 = update_post_meta( $pid, 'ea_address_2', $address_2); $update_city = update_post_meta( $pid, 'ea_city', $city); $update_state = update_post_meta( $pid, 'ea_state', $state); $update_postcode = update_post_meta( $pid, 'ea_postcode', $postcode); $update_country = update_post_meta( $pid, 'ea_country', $country); $update_email = update_post_meta( $pid, 'ea_email', $email); $update_phone = update_post_meta( $pid, 'ea_phone', $phone); $update_pym = update_post_meta( $pid, 'ea_payment_method', $payment_method); $update_event_name = update_post_meta( $pid, 'ea_event_name', $event_name); $update_eid = update_post_meta( $pid, 'ea_event_id', $event_id); $update_oid = update_post_meta( $pid, 'ea_order_id', $order_id); } } function mep_get_order_info($info,$id){ $stock_msg = $info; $koba = explode("_", $stock_msg); return $koba[$id]; } add_action('woocommerce_order_status_changed', 'mep_event_seat_management', 10, 4); function mep_event_seat_management( $order_id, $from_status, $to_status, $order ) { // Getting an instance of the order object $order = wc_get_order( $order_id ); $order_meta = get_post_meta($order_id); # Iterating through each order items (WC_Order_Item_Product objects in WC 3+) foreach ( $order->get_items() as $item_id => $item_values ) { $product_id = $item_values->get_product_id(); $item_data = $item_values->get_data(); $product_id = $item_data['product_id']; $item_quantity = $item_values->get_quantity(); $product = get_page_by_title( $item_data['name'], OBJECT, 'mep_events' ); $event_name = $item_data['name']; $event_id = $product->ID; } $mep_total = get_post_meta($event_id,'total_booking', true); if($mep_total){ $mep_total_booking = $mep_total; }else{ $mep_total_booking =0; } $order_meta_text = "_stock_msg_".$order_id; $order_processing = "processing_".$order_id; $order_completed = "completed_".$order_id; $order_cancelled = "cancelled_".$order_id; if( $order->has_status( 'processing' )) { update_post_meta( $event_id, $order_meta_text, $order_processing); $mep_stock_msg = mep_get_order_info(get_post_meta($event_id,$order_meta_text, true),0); $mep_stock_order = mep_get_order_info(get_post_meta($event_id,$order_meta_text, true),1); if($mep_stock_order==$order_id){ if($mep_stock_msg=='completed'){ update_post_meta( $event_id, $order_meta_text, $order_processing); } else{ update_post_meta( $event_id, 'total_booking', ($mep_total_booking+$item_quantity)); update_post_meta( $event_id, $order_meta_text, $order_processing); } } } if($order->has_status( 'cancelled' )) { update_post_meta( $event_id, $order_meta_text, $order_cancelled); $mep_stock_msg = mep_get_order_info(get_post_meta($event_id,$order_meta_text, true),0); $mep_stock_order = mep_get_order_info(get_post_meta($event_id,$order_meta_text, true),1); if($mep_stock_order==$order_id){ $update_total_booking = update_post_meta( $event_id, 'total_booking', ($mep_total_booking-$item_quantity)); } } if( $order->has_status( 'completed' )) { // update_post_meta( $event_id, $order_meta_text, $order_completed); $mep_stock_msg = mep_get_order_info(get_post_meta($event_id,$order_meta_text, true),0); $mep_stock_order = mep_get_order_info(get_post_meta($event_id,$order_meta_text, true),1); if($mep_stock_order==$order_id){ if($mep_stock_msg=='processing'){ update_post_meta( $event_id, $order_meta_text, $order_completed); } else{ update_post_meta( $event_id, 'total_booking', ($mep_total_booking+$item_quantity)); update_post_meta( $event_id, $order_meta_text, $order_completed); } } } } add_action('restrict_manage_posts', 'mep_filter_post_type_by_taxonomy'); function mep_filter_post_type_by_taxonomy() { global $typenow; $post_type = 'mep_events'; // change to your post type $taxonomy = 'mep_cat'; // change to your taxonomy if ($typenow == $post_type) { $selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : ''; $info_taxonomy = get_taxonomy($taxonomy); wp_dropdown_categories(array( 'show_option_all' => __("Show All {$info_taxonomy->label}"), 'taxonomy' => $taxonomy, 'name' => $taxonomy, 'orderby' => 'name', 'selected' => $selected, 'show_count' => true, 'hide_empty' => true, )); }; } add_filter('parse_query', 'mep_convert_id_to_term_in_query'); function mep_convert_id_to_term_in_query($query) { global $pagenow; $post_type = 'mep_events'; // change to your post type $taxonomy = 'mep_cat'; // change to your taxonomy $q_vars = &$query->query_vars; if ( $pagenow == 'edit.php' && isset($q_vars['post_type']) && $q_vars['post_type'] == $post_type && isset($q_vars[$taxonomy]) && is_numeric($q_vars[$taxonomy]) && $q_vars[$taxonomy] != 0 ) { $term = get_term_by('id', $q_vars[$taxonomy], $taxonomy); $q_vars[$taxonomy] = $term->slug; } } add_filter('parse_query', 'mep_attendee_filter_query'); function mep_attendee_filter_query($query) { global $pagenow; $post_type = 'mep_events_attendees'; $q_vars = &$query->query_vars; if ( $pagenow == 'edit.php' && isset($_GET['post_type']) && $_GET['post_type'] == $post_type && isset($_GET['meta_value']) && $_GET['meta_value'] != 0) { $q_vars['meta_key'] = 'ea_event_id'; $q_vars['meta_value'] = $_GET['meta_value']; } } add_filter( 'post_row_actions', 'mep_remove_row_actions', 10, 1 ); function mep_remove_row_actions( $actions ) { if( get_post_type() === 'mep_events_attendees' ) unset( $actions['edit'] ); // unset( $actions['view'] ); unset( $actions['trash'] ); unset( $actions['inline hide-if-no-js'] ); return $actions; } // Add the custom columns to the book post type: add_filter( 'manage_mep_events_posts_columns', 'mep_set_custom_edit_event_columns' ); function mep_set_custom_edit_event_columns($columns) { unset( $columns['date'] ); $columns['mep_status'] = __( 'Status', 'mep' ); $columns['mep_atten'] = __( 'Attendees', 'mep' ); return $columns; } // Add the data to the custom columns for the book post type: add_action( 'manage_mep_events_posts_custom_column' , 'mep_custom_event_column', 10, 2 ); function mep_custom_event_column( $column, $post_id ) { switch ( $column ) { case 'mep_status' : $values = get_post_custom( $post_id ); echo mep_get_event_status($values['mep_event_start_date'][0]); break; case 'mep_atten' : echo 'Attendees List'; break; } } // Getting event exprie date & time function mep_get_event_status($startdatetime){ $time = strtotime($startdatetime); $newformat = date('Y-m-d H:i:s',$time); $datetime1 = new DateTime(); $datetime2 = new DateTime($newformat); $interval = $datetime1->diff($datetime2); // print_r($newformat); if(time() > strtotime($newformat)){ return "Expired"; } else{ $days = $interval->days; $hours = $interval->h; $minutes = $interval->i; if($days>0){ $dd = $days." days "; }else{ $dd=""; } if($hours>0){ $hh = $hours." hours "; }else{ $hh=""; } if($minutes>0){ $mm = $minutes." minutes "; }else{ $mm=""; } return "$dd $hh $mm"; } } // Get Event Registration Button function mep_get_event_reg_btn($post_id){ // $event_meta = get_post_meta($post_id, 'mep_event_meta',true); $event_meta = get_post_custom(get_the_id()); $event_expire_date = $event_meta['mep_event_start_date'][0]; $event_sqi = $event_meta['mep_sqi'][0]; $event_ecternal_link = ''; // $event_ecternal_url = $event_meta['ex_reg_url'][0]; $book_count = get_post_meta($post_id,'total_booking', true); if($book_count){ $total_book = $book_count; }else{ $total_book = 0; } $seat_left = ($event_meta['mep_total_seat'][0]- $total_book); $time = strtotime($event_expire_date); $newformat = date('Y-m-d H:i:s',$time); $datetime1 = new DateTime(); $datetime2 = new DateTime($newformat); $interval = $datetime1->diff($datetime2); if(time() > strtotime($newformat)){ echo "Event Expired"; } elseif($seat_left<=0){ echo "No Seat Available"; } else{ $days = $interval->d; $hours = $interval->h; $minutes = $interval->i; if($days>0){ $dd = $days." days "; }else{ $dd=""; } if($hours>0){ $hh = $hours." hours "; }else{ $hh=""; } if($minutes>0){ $mm = $minutes." minutes "; }else{ $mm=""; } ?>
cart->get_checkout_url(); return $checkout_url; } // Add the custom columns to the book post type: add_filter( 'manage_mep_events_attendees_posts_columns', 'mep_set_custom_events_attendees_columns' ); function mep_set_custom_events_attendees_columns($columns) { unset( $columns['title'] ); unset( $columns['date'] ); $columns['mep_uid'] = __( 'Unique ID', 'mep' ); $columns['mep_fn'] = __( 'Full Name', 'mep' ); $columns['mep_email'] = __( 'email', 'mep' ); $columns['mep_phone'] = __( 'Phone', 'mep' ); $columns['mep_address'] = __( 'Addresss', 'mep' ); $columns['mep_evnt'] = __( 'Event', 'mep' ); return $columns; } // Add the data to the custom columns for the book post type: add_action( 'manage_mep_events_attendees_posts_custom_column' , 'mep_events_attendees_column', 10, 2 ); function mep_events_attendees_column( $column, $post_id ) { switch ( $column ) { case 'mep_uid' : echo get_post_meta( $post_id, 'ea_order_id', true ); break; case 'mep_fn' : echo get_post_meta( $post_id, 'ea_first_name', true )." ".get_post_meta( $post_id, 'ea_last_name', true ); break; case 'mep_email' : echo get_post_meta( $post_id, 'ea_email', true ); break; case 'mep_phone' : echo get_post_meta( $post_id, 'ea_phone', true ); break; case 'mep_address' : echo get_post_meta( $post_id, 'ea_address_1', true )."