Skip to content

Instantly share code, notes, and snippets.

@webtoffee-git
Created November 28, 2023 05:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save webtoffee-git/0e16ff96db6d484caf9427759b0f53d9 to your computer and use it in GitHub Desktop.
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/)
<?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