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; } } } function mep_get_order_info($info,$id){ $stock_msg = $info; $koba = explode("_", $stock_msg); return $koba[$id]; } 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']; } } // Send Confirmation email to customer function mep_event_confirmation_email_sent($event_id,$sent_email){ $values = get_post_custom($event_id); $global_email_text = mep_get_option( 'mep_confirmation_email_text', 'email_setting_sec', ''); $global_email_form_email = mep_get_option( 'mep_email_form_email', 'email_setting_sec', ''); $global_email_form = mep_get_option( 'mep_email_form_name', 'email_setting_sec', ''); $global_email_sub = mep_get_option( 'mep_email_subject', 'email_setting_sec', ''); $event_email_text = $values['mep_event_cc_email_text'][0]; $admin_email = get_option( 'admin_email' ); $site_name = get_option( 'blogname' ); if($global_email_sub){ $email_sub = $global_email_sub; }else{ $email_sub = 'Confirmation Email'; } if($global_email_form){ $form_name = $global_email_form; }else{ $form_name = $site_name; } if($global_email_form_email){ $form_email = $global_email_form_email; }else{ $form_email = $admin_email; } if($event_email_text){ $email_body = $event_email_text; }else{ $email_body = $global_email_text; } $headers[] = "From: $form_name <$form_email>"; if($email_body){ $sent = wp_mail( $sent_email, $email_sub, $email_body, $headers ); } } } function mep_event_get_order_meta($item_id,$key){ global $wpdb; $table_name = $wpdb->prefix."woocommerce_order_itemmeta"; $sql = 'SELECT meta_value FROM '.$table_name.' WHERE order_item_id ='.$item_id.' AND meta_key="'.$key.'"'; $results = $wpdb->get_results($sql) or die(mysql_error()); foreach( $results as $result ) { $value = $result->meta_value; } return $value; } add_action( 'woocommerce_thankyou','mep_set_first_order_sts'); function mep_set_first_order_sts($order_id ){ // 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 ) { $item_id = $item_id; } $event_id = mep_event_get_order_meta($item_id,'event_id'); $mep_atnd = "_mep_atnd_".$order_id; update_post_meta( $event_id, $mep_atnd, "a1"); } add_action('woocommerce_order_status_changed', 'mep_event_seat_management', 10, 4); function mep_event_seat_management( $order_id, $from_status, $to_status, $order ) { global $wpdb; // Getting an instance of the order object $order = wc_get_order( $order_id ); $order_meta = get_post_meta($order_id); $c = 1; # Iterating through each order items (WC_Order_Item_Product objects in WC 3+) foreach ( $order->get_items() as $item_id => $item_values ) { $item_quantity = $item_values->get_quantity(); $item_id = $item_id; } $event_id = mep_event_get_order_meta($item_id,'event_id'); $table_name = $wpdb->prefix . 'woocommerce_order_itemmeta'; $result = $wpdb->get_results( "SELECT * FROM $table_name WHERE order_item_id=$item_id" ); $mep_total = get_post_meta($event_id,'total_booking', true); if($mep_total){ $mep_total_booking = $mep_total; }else{ $mep_total_booking =0; } $email = $order_meta['_billing_email'][0]; $order_meta_text = "_stock_msg_".$order_id; $order_processing = "processing_".$order_id; $order_completed = "completed_".$order_id; $order_cancelled = "cancelled_".$order_id; $mep_atnd = "_mep_atnd_".$order_id; // if($order->has_status( 'processing' ) || $order->has_status( 'pending' )) { if($order->has_status( 'processing' ) || $order->has_status( 'completed' )) { // update_post_meta( $event_id, $mep_atnd, "a2"); $mep_stock_msgc = mep_get_order_info(get_post_meta($event_id,$order_meta_text, true),0); $mep_stock_orderc = mep_get_order_info(get_post_meta($event_id,$order_meta_text, true),1); if($mep_stock_orderc==$order_id){ if($mep_stock_msgc=='cancelled'){ foreach ( $result as $page ){ if (strpos($page->meta_key, '_') !== 0) { $order_option_name = $event_id.str_replace(' ', '', mep_get_string_part($page->meta_key,0)); $order_option_qty = mep_get_string_part($page->meta_key,1); $tes = get_post_meta($event_id,"mep_xtra_$order_option_name",true); $ntes = ($tes+$order_option_qty); update_post_meta( $event_id, "mep_xtra_$order_option_name",$ntes); } } } } 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,$mep_atnd, "a2"); 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)); foreach ( $result as $page ){ if (strpos($page->meta_key, '_') !== 0) { $order_option_name = $event_id.str_replace(' ', '', mep_get_string_part($page->meta_key,0)); $order_option_qty = mep_get_string_part($page->meta_key,1); $tes = get_post_meta($event_id,"mep_xtra_$order_option_name",true); $ntes = ($tes-$order_option_qty); if($tes>0){ update_post_meta( $event_id, "mep_xtra_$order_option_name",$ntes); } } } } } if( $order->has_status( 'completed' )) { update_post_meta( $event_id, $mep_atnd, "a2"); // 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); mep_event_confirmation_email_sent($event_id,$email); 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); foreach ( $result as $page ){ if (strpos($page->meta_key, '_') !== 0) { $order_option_name = $event_id.str_replace(' ', '', mep_get_string_part($page->meta_key,0)); $order_option_qty = mep_get_string_part($page->meta_key,1); $tes = get_post_meta($event_id,"mep_xtra_$order_option_name",true); $ntes = ($tes+$order_option_qty); update_post_meta( $event_id, "mep_xtra_$order_option_name",$ntes); } } } } } } 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 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"; } } // Redirect to Checkout after successfuly event registration add_filter ('woocommerce_add_to_cart_redirect', 'mep_event_redirect_to_checkout'); function mep_event_redirect_to_checkout() { global $woocommerce; $checkout_url = wc_get_checkout_url(); return $checkout_url; } function mep_load_events_templates($template) { global $post; if ($post->post_type == "mep_events"){ $template_name = 'single-events.php'; $template_path = 'mage-events/'; $default_path = plugin_dir_path( __FILE__ ) . 'templates/'; $template = locate_template( array($template_path . $template_name) ); if ( ! $template ) : $template = $default_path . $template_name; endif; return $template; } if ($post->post_type == "mep_events_attendees"){ $plugin_path = plugin_dir_path( __FILE__ ); $template_name = 'templates/single-mep_events_attendees.php'; if($template === get_stylesheet_directory() . '/' . $template_name || !file_exists($plugin_path . $template_name)) { return $template; } return $plugin_path . $template_name; } return $template; } add_filter('single_template', 'mep_load_events_templates'); add_filter('template_include', 'mep_organizer_set_template'); function mep_organizer_set_template( $template ){ if( is_tax('mep_org')){ $template = plugin_dir_path( __FILE__ ).'templates/taxonomy-organozer.php'; } if( is_tax('mep_cat')){ $template = plugin_dir_path( __FILE__ ).'templates/taxonomy-category.php'; } return $template; } function mep_social_share(){ ?>
prefix . 'woocommerce_order_itemmeta'; $result = $wpdb->get_results( "SELECT * FROM $table_name WHERE order_item_id=$id" ); foreach ( $result as $page ) { if (strpos($page->meta_key, '_') !== 0) { echo mep_get_string_part($page->meta_key,$part).'Name | City |
---|---|