Created
November 28, 2023 05:13
-
-
Save webtoffee-git/0e16ff96db6d484caf9427759b0f53d9 to your computer and use it in GitHub Desktop.
Import and Export membership data created by WooComerce membership plugin - By WebToffee ( Import Export suite for WooCommerce, https://woo.com/products/import-export-suite-for-woocommerce/)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php //Do not copy this line of code | |
add_filter('hf_csv_customer_post_columns', 'hf_alter_csv_header_for_wc_membeship_export',11); | |
function hf_alter_csv_header_for_wc_membeship_export($export_columns){ | |
$export_columns['meta:wc_membership_plan_data'] = 'meta:wc_membership_plan_data'; | |
$export_columns['meta:wc_user_membership_data'] = 'meta:wc_user_membership_data'; | |
$export_columns['meta:wc_membership_plan_rule_data'] = 'meta:wc_membership_plan_rule_data'; | |
return $export_columns; | |
} | |
add_filter('wt_ier_customer_csv_export_data', 'hf_customer_csv_export_data_for_wc_membeship_export', 11, 2); | |
function hf_customer_csv_export_data_for_wc_membeship_export($customer_data, $csv_columns){ | |
global $wpdb; | |
$user_id = $customer_data['ID']; | |
if( in_array('meta:wc_user_membership_data', $csv_columns )){ | |
$result_wc_user_membership_data = ''; | |
$result_wc_user_membership_meta_data = ''; | |
// get_post with type wc_user_membeship and post_author | |
$sql_wc_user_membership_data = "SELECT * FROM {$wpdb->posts} WHERE post_author=$user_id AND post_type='wc_user_membership'"; | |
$result_wc_user_membership_data = $wpdb->get_results($sql_wc_user_membership_data,ARRAY_A); | |
if( !empty($result_wc_user_membership_data)){ | |
$wc_user_membership_id = $result_wc_user_membership_data[0]['ID']; | |
$sql_wc_user_membership_meta_data = "SELECT meta_key,meta_value FROM {$wpdb->postmeta} WHERE post_id=$wc_user_membership_id"; | |
$result_wc_user_membership_meta_data = $wpdb->get_results($sql_wc_user_membership_meta_data,ARRAY_A); | |
if(in_array('meta:wc_membership_plan_data', $csv_columns) && $result_wc_user_membership_data[0]['post_parent'] != 0 ){ | |
$sql_wc_membership_plan_data= ''; | |
$result_wc_membership_plan_meta_data= ''; | |
$wc_membership_plan_id = $result_wc_user_membership_data[0]['post_parent']; | |
$sql_wc_membership_plan_data = "SELECT * FROM {$wpdb->posts} WHERE ID=$wc_membership_plan_id AND post_type='wc_membership_plan'"; | |
$result_wc_membership_plan_data =$wpdb->get_results($sql_wc_membership_plan_data,ARRAY_A); | |
if( !empty($result_wc_membership_plan_data)){ | |
$sql_wc_membership_plan_meta_data = "SELECT meta_key,meta_value FROM {$wpdb->postmeta} WHERE post_id=$wc_membership_plan_id"; | |
$result_wc_membership_plan_meta_data = $wpdb->get_results($sql_wc_membership_plan_meta_data,ARRAY_A); | |
} | |
$wc_membership_plan_data['data'] = $result_wc_membership_plan_data; | |
$wc_membership_plan_data['meta_data'] = $result_wc_membership_plan_meta_data; | |
$wc_membership_plan_data = serialize( $wc_membership_plan_data); | |
} | |
} | |
$wc_user_membership_data['data'] = $result_wc_user_membership_data; | |
$wc_user_membership_data['meta_data'] = $result_wc_user_membership_meta_data; | |
$wc_user_membership_data = serialize($wc_user_membership_data); | |
} | |
$customer_data['wc_user_membership_data'] = $wc_user_membership_data; | |
$customer_data['wc_membership_plan_data'] = $wc_membership_plan_data; | |
$wc_membership_plan_rule_data = get_option('wc_memberships_rules'); | |
if(get_option('wt_membership_rule_exported')!== 'YES'){ | |
$customer_data['wc_membership_plan_rule_data'] = serialize($wc_membership_plan_rule_data); | |
update_option('wt_membership_rule_exported','YES'); | |
}else{ | |
$customer_data['wc_membership_plan_rule_data'] = ''; | |
} | |
return $customer_data; | |
} | |
add_filter('wt_user_impexp_alter_user_meta', 'xa_user_impexp_alter_user_meta',11,3); | |
function xa_user_impexp_alter_user_meta($found_customer, $user_meta_fields, $meta_array){ | |
global $wpdb; | |
$wc_membership_plan_inserted_id=false; | |
if(!empty( $meta_array['wc_membership_plan_rule_data'])){ | |
update_option('wt_membership_plan_rule',$meta_array['wc_membership_plan_rule_data'] ); | |
} | |
if($meta_array['wc_membership_plan_data']){ | |
$wc_membership_plan_data = unserialize($meta_array['wc_membership_plan_data']); | |
$wc_membership_plan_data_data = $wc_membership_plan_data['data'][0]; | |
$wc_membership_plan_data_meta_data = $wc_membership_plan_data['meta_data']; | |
if(!empty($wc_membership_plan_data_data)){ | |
$old_membership_plan_id = $wc_membership_plan_data_data['ID']; | |
$post_title=$wc_membership_plan_data_data['post_title']; | |
$sql =$wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_type='wc_membership_plan' AND post_title =%s",$post_title) ; | |
$wc_membership_plan_inserted_id = $wpdb->get_var($sql); | |
if(empty($wc_membership_plan_inserted_id)){ | |
unset($wc_membership_plan_data_data['ID']); | |
$table_name = $wpdb->prefix . 'posts'; | |
$wc_membership_plan_inserted_id = wp_insert_post($wc_membership_plan_data_data); | |
} | |
if($wc_membership_plan_inserted_id !==0 && ! is_wp_error($wc_membership_plan_inserted_id)){ | |
foreach($wc_membership_plan_data_meta_data as $d_value){ | |
update_post_meta($wc_membership_plan_inserted_id,$d_value['meta_key'], $d_value['meta_value']); | |
} | |
$wt_membership_rule = unserialize(get_option('wt_membership_plan_rule')); | |
if(!empty( $wt_membership_rule)){ | |
foreach($wt_membership_rule as $key=> $rule){ | |
if($rule['membership_plan_id'] == $old_membership_plan_id){ | |
$wt_membership_rule[$key]['membership_plan_id'] = $wc_membership_plan_inserted_id; | |
} | |
} | |
update_option('wt_membership_plan_rule', $wt_membership_rule); | |
} | |
} | |
} | |
} | |
if($meta_array['wc_user_membership_data']){ | |
$wc_user_membership_data= unserialize($meta_array['wc_user_membership_data']); | |
$wc_user_membership_data_data = $wc_user_membership_data['data'][0]; | |
$wc_user_membership_data_meta_data = $wc_user_membership_data['meta_data']; | |
if( $wc_membership_plan_inserted_id){ | |
$user_membership_check_sql=$wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_type='wc_user_membership' AND post_author= %d",$found_customer); | |
$user_membership_id = $wpdb->get_var($user_membership_check_sql); | |
unset($wc_user_membership_data_data['ID']); | |
if(!empty($user_membership_id)){ | |
$wc_user_membership_data_data['ID']= $user_membership_id; | |
} | |
$wc_user_membership_data_data['post_parent'] = $wc_membership_plan_inserted_id; | |
$wc_user_membership_data_data['post_author'] = $found_customer; | |
$user_membership_id = wp_insert_post($wc_user_membership_data_data); | |
if($user_membership_id!==0 && ! is_wp_error($user_membership_id)){ | |
foreach($wc_user_membership_data_meta_data as $p_value){ | |
update_post_meta($user_membership_id,$p_value['meta_key'], $p_value['meta_value']); | |
} | |
} | |
} | |
} | |
delete_post_meta($found_customer,'wc_user_membership_data'); | |
delete_post_meta($found_customer,'wc_membership_plan_data'); | |
return $found_customer; | |
} | |
add_filter('wt_iew_alter_export_data', 'wt_iew_alter_export_data',10,6); | |
function wt_iew_alter_export_data($export_data, $offset, $is_last_offset, $file_as, $to_export, $csv_delimiter) { | |
if ($is_last_offset) { | |
delete_option('wt_membership_rule_exported'); | |
} | |
return $export_data; | |
} | |
add_filter('wt_iew_importer_done_import', 'wt_iew_importer_done_import'); | |
function wt_iew_importer_done_import($to_process){ | |
$wt_membership_rule = get_option('wt_membership_plan_rule'); | |
delete_option('wt_membership_plan_rule'); | |
update_option('wc_memberships_rules',$wt_membership_rule); | |
return $to_process; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment