Import post from XML files into custom post type programatically [closed]

After lot of searching about this functionality i have the solutions for this.

Please check below example.

global $wpdb;
    if (isset($_POST['submit1'])) {
//$uri = get_template_directory_uri().'/xmlupload/';
        $uri = wp_upload_dir();
        $target_dir = $uri;
        $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
        $filename = basename($_FILES["fileToUpload"]["name"]);
        $filetypenew = wp_check_filetype($filename);
        $uploadOk = 1;
        $FileType = pathinfo($target_file, PATHINFO_EXTENSION);
//$FileType = pathinfo($filetype,PATHINFO_EXTENSION);

// Check if file already exists
        if (file_exists($target_file)) {
            echo "<br/><br/>Sorry, file already exists.";
            $uploadOk = 0;
        }
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
            echo "<br/><br/>Sorry, your file is too large.";
            $uploadOk = 0;
        }
// Allow certain file formats
        if ($FileType != "xml") {
            echo "<br/><br/>Sorry, only XML files are allowed.";
            $uploadOk = 0;
        }
// Check if $uploadOk is set to 0 by an error
        if ($uploadOk == 0) {
            echo "<br/><br/>Sorry, your file was not uploaded.";
            //echo "<br/>".$uri;
            //echo "<br/>".$target_file;
            //echo "<br/>file name is ".$filetypenew." file name is ".$filename;
// if everything is ok, try to upload file
        } else {
            if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
                echo "<br/><br/>The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded successfully!!.";
                $xml = simplexml_load_file($target_file,null,LIBXML_NOCDATA);

            $counter = 0;
            $status="";
            $state="";
            $suburb = '';
            $additional_array = '';
            foreach ($xml->children() as $key => $property) {

                // Gather post data.
                $post = array(
                    'post_title'    => $property->headline,
                    'post_content'  => $property->description,
                    'post_status'   => 'publish',
                    'post_type'   => 'property',
                    'post_author'   => 1
                );

                // Insert the post into the database.
                $post_id = wp_insert_post( $post );

                // Gather agent post data.
                $agent_post = array(
                    'post_title'    => $property->listingAgent->name,
                    'post_status'   => 'publish',
                    'post_type'   => 'houzez_agent',
                    'post_author'   => 1
                );

                // Insert the post into the database.
                $agent_id = wp_insert_post( $agent_post );

                if(!term_exists( $key, 'property_type')){
                    $cat_id = wp_insert_term( ucfirst($key), 'property_type', array( 'slug' => $key ) );
                    wp_set_post_terms( $post_id, array($cat_id['term_id']), 'property_type' );
                }else{
                    $term = get_term_by('slug', $key, 'property_type');
                    wp_set_post_terms( $post_id, array($term->term_id), 'property_type' );
                }

                if(!term_exists( strtolower($property->address->state), 'property_state')) {
                    if ($state != strtolower($property->address->state)) {
                        $state_id = wp_insert_term($property->address->state, 'property_state', array('slug' => strtolower($property->address->state)));
                    }
                    wp_set_post_terms($post_id, array($state_id['term_id']), 'property_state');
                }else{
                    $term = get_term_by('slug', strtolower($property->address->state), 'property_state');
                    wp_set_post_terms($post_id, array($term->term_id), 'property_state');
                }

                if($key == 'residential' || $key == 'rental'){
                    if(!term_exists( $property->authority->attributes()['value'], 'property_status')) {
                        if ($status != $property->authority->attributes()['value']) {
                            $status_id = wp_insert_term(ucfirst($property->authority->attributes()['value']), 'property_status', array('slug' => $property->authority->attributes()['value']));
                        }
                        wp_set_post_terms($post_id, array($status_id['term_id']), 'property_status');
                    }else{
                        $term = get_term_by('slug', $property->authority->attributes()['value'], 'property_status');
                        wp_set_post_terms($post_id, array($term->term_id), 'property_status');
                    }
                }else{
                    if(!term_exists( $property->commercialAuthority->attributes()['value'], 'property_status')) {
                        if ($status != $property->commercialAuthority->attributes()['value']) {
                            $status_id = wp_insert_term(ucfirst($property->commercialAuthority->attributes()['value']), 'property_status', array('slug' => $property->commercialAuthority->attributes()['value']));
                        }
                        wp_set_post_terms($post_id, array($status_id['term_id']), 'property_status');
                    }else{
                        $term = get_term_by('slug', $property->commercialAuthority->attributes()['value'], 'property_status');
                        wp_set_post_terms($post_id, array($term->term_id), 'property_status');
                    }
                }



                $table_name = $wpdb->prefix . 'postmeta';

                $data1 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_bedrooms',
                    'meta_value' => $property->features->bedrooms
                );

                $wpdb->insert($table_name, $data1, '%s');

                $data2 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_bathrooms',
                    'meta_value' => $property->features->bathrooms
                );

                $wpdb->insert($table_name, $data2, '%s');

                $data3 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_garage',
                    'meta_value' => $property->features->garages
                );

                $wpdb->insert($table_name, $data3, '%s');

                $data4 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_id',
                    'meta_value' => $property->uniqueID
                );

                $wpdb->insert($table_name, $data4, '%s');

                $data5 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_price',
                    'meta_value' => $property->price
                );

                $wpdb->insert($table_name, $data5, '%s');

                $data6 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_price_postfix',
                    'meta_value' => 'mo'
                );

                $wpdb->insert($table_name, $data6, '%s');

                $data7 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_map_address',
                    'meta_value' => $property->address->streetNumber.','.$property->address->street.','.$property->address->suburb.','.$property->address->state.','.$property->address->postcode
                );

                $wpdb->insert($table_name, $data7, '%s');

                $data8 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_location',
                    'meta_value' => $property->Geocode->Longitude.','.$property->Geocode->Latitude
                );

                $wpdb->insert($table_name, $data8, '%s');

                $data9 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_country',
                    'meta_value' => $property->address->state
                );

                $wpdb->insert($table_name, $data9, '%s');

                $data10 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_address',
                    'meta_value' => $property->address->street
                );

                $wpdb->insert($table_name, $data10, '%s');

                $data11 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_zip',
                    'meta_value' => $property->address->postcode
                );

                $wpdb->insert($table_name, $data11, '%s');

                $media_id = media_sideload_image( $property->images->img[0]->attributes()['url'], $post_id, '', $return = 'id' );

                $data12 = array(
                    'post_id' => $post_id,
                    'meta_key' => '_thumbnail_id',
                    'meta_value' => $media_id
                );

                $wpdb->insert($table_name, $data12, '%s');

                foreach ($property->images->img as $images){
                    if($images->attributes()['url'] != ''){
                        $medias_id = media_sideload_image( $images->attributes()['url'], $post_id, '', $return = 'id' );
                        $data13 = array(
                            'post_id' => $post_id,
                            'meta_key' => 'fave_property_images',
                            'meta_value' => $medias_id
                        );

                        $wpdb->insert($table_name, $data13, '%s');
                    }
                }

                $data14 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_zip',
                    'meta_value' => $property->address->postcode
                );

                $wpdb->insert($table_name, $data14, '%s');

                $data15 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'slide_template',
                    'meta_value' => 'default'
                );

                $wpdb->insert($table_name, $data15, '%s');

                $data16 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_map_street_view',
                    'meta_value' => 'show'
                );

                $wpdb->insert($table_name, $data16, '%s');

                $data17 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'houzez_geolocation_long',
                    'meta_value' => $property->Geocode->Longitude
                );

                $wpdb->insert($table_name, $data17, '%s');

                $data18 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'houzez_geolocation_lat',
                    'meta_value' => $property->Geocode->Latitude
                );

                $wpdb->insert($table_name, $data18, '%s');

                $data19 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'property_status',
                    'meta_value' => $property->attributes()['status']
                );

                $wpdb->insert($table_name, $data19, '%s');

                $data20 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'property_authority',
                    'meta_value' => $property->authority->attributes()['value']
                );

                $wpdb->insert($table_name, $data20, '%s');

                $data21 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'property_category',
                    'meta_value' => $property->category->attributes()['name']
                );

                $wpdb->insert($table_name, $data21, '%s');

                $data22 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'property_unique_id',
                    'meta_value' => $property->uniqueID
                );

                $wpdb->insert($table_name, $data22, '%s');

                $data23 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_property_map',
                    'meta_value' => '1'
                );

                $wpdb->insert($table_name, $data23, '%s');

                $additional_array[] = array(
                    'fave_additional_feature_title' => 'Feature',
                    'fave_additional_feature_value' => '"'.$property->features->otherFeatures.'"'
                );
                $data24 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'additional_features',
                    'meta_value' => serialize($additional_array)
                );

                $wpdb->insert($table_name, $data24, '%s');

                $data25 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_additional_features_enable',
                    'meta_value' => 'enable'
                );

                $wpdb->insert($table_name, $data25, '%s');

                $data26 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'property_video_url',
                    'meta_value' => $property->videoLink
                );

                $wpdb->insert($table_name, $data26, '%s');

                $data27 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_video_url',
                    'meta_value' => $property->videoLink
                );

                $wpdb->insert($table_name, $data27, '%s');

                $data28 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'property_floorplan',
                    'meta_value' => $property->objects->floorplan->attributes()['url']
                );

                $wpdb->insert($table_name, $data28, '%s');

                $data29 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_featured',
                    'meta_value' => '1'
                );

                $wpdb->insert($table_name, $data29, '%s');

                $data30 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_agents',
                    'meta_value' => $agent_id
                );

                $wpdb->insert($table_name, $data30, '%s');

                $data31 = array(
                    'post_id' => $post_id,
                    'meta_key' => 'fave_agent_display_option',
                    'meta_value' => 'agent_info'
                );

                $wpdb->insert($table_name, $data31, '%s');

                // Agent meta

                if($property->listingAgent->telephone->attributes()['type'] == 'mobile'){
                    $agentdata1 = array(
                        'post_id' => $agent_id,
                        'meta_key' => 'fave_agent_mobile',
                        'meta_value' => $property->listingAgent->telephone
                    );

                    $wpdb->insert($table_name, $agentdata1, '%s');
                }

                if($property->listingAgent->telephone->attributes()['type'] == 'BH'){
                    $agentdata2 = array(
                        'post_id' => $agent_id,
                        'meta_key' => 'fave_agent_office_num',
                        'meta_value' => $property->listingAgent->telephone
                    );

                    $wpdb->insert($table_name, $agentdata2, '%s');
                }

                $agentdata3 = array(
                    'post_id' => $agent_id,
                    'meta_key' => 'fave_agent_email',
                    'meta_value' => $property->listingAgent->email
                );

                $wpdb->insert($table_name, $agentdata3, '%s');

                $agentdata4 = array(
                    'post_id' => $agent_id,
                    'meta_key' => 'fave_agent_agencies',
                    'meta_value' => $property->listingAgent->office_id
                );

                $wpdb->insert($table_name, $agentdata4, '%s');

                $agentdata5 = array(
                    'post_id' => $agent_id,
                    'meta_key' => 'fave_agent_id',
                    'meta_value' => $property->listingAgent->agentid
                );

                $wpdb->insert($table_name, $agentdata5, '%s');

                $agentdata6 = array(
                    'post_id' => $agent_id,
                    'meta_key' => 'slide_template',
                    'meta_value' => 'default'
                );

                $wpdb->insert($table_name, $agentdata6, '%s');

                /*update_post_meta($post_id,'fave_property_bedrooms',$property->features->bedrooms);
                update_post_meta($post_id,'fave_property_bathrooms',$property->features->bathrooms);
                update_post_meta($post_id,'fave_property_garage',$property->features->garages);
                update_post_meta($post_id,'fave_property_id',$property->uniqueID);
                update_post_meta($post_id,'fave_property_price',$property->price);
                update_post_meta($post_id,'fave_property_price_postfix','mo');
                update_post_meta($post_id,'fave_property_map_address',$property->address->streetNumber.','.$property->address->street.','.$property->address->suburb.','.$property->address->state.','.$property->address->postcode);
                update_post_meta($post_id,'fave_property_location',$property->Geocode->Longitude.','.$property->Geocode->Latitude);
                update_post_meta($post_id,'fave_property_country',$property->address->state);
                update_post_meta($post_id,'fave_property_address',$property->address->street);
                update_post_meta($post_id,'fave_property_zip',$property->address->postcode);
                //update_post_meta($post_id,'fave_video_url',$property->address->postcode);
                $media_id = media_sideload_image( $property->images->img[0]->attributes()['url'], $post_id, '', $return = 'id' );
                update_post_meta($post_id,'_thumbnail_id',$media_id);
                foreach ($property->images->img as $images){
                    $medias_id = media_sideload_image( $images->attributes()['url'], $post_id, '', $return = 'id' );
                    add_post_meta($post_id,'fave_property_images',$medias_id);
                }
                update_post_meta($post_id,'fave_property_zip',$property->address->postcode);
                update_post_meta($post_id,'slide_template','default');
                update_post_meta($post_id,'fave_property_map_street_view','show');
                update_post_meta($post_id,'houzez_geolocation_long',$property->Geocode->Longitude);
                update_post_meta($post_id,'houzez_geolocation_lat',$property->Geocode->Latitude);
                update_post_meta($post_id,'property_status',$property->attributes()['status']);
                update_post_meta($post_id,'property_authority',$property->authority->attributes()['value']);
                update_post_meta($post_id,'property_category',$property->category->attributes()['name']);
                update_post_meta($post_id,'property_unique_id',$property->uniqueID);*/
                if($key == 'residential' || $key == 'rental'){
                    $status = $property->authority->attributes()['value'];
                }else{
                    $status = $property->commercialAuthority->attributes()['value'];
                }
                $state = strtolower($property->address->state);

            }
            // deleting the file
            //unlink($target_file);
            /* end storing in db */
            //redirecting
            //wp_redirect(admin_url('admin.php?page=custom-importer', 'http'), 301);
            //end redirecting
        } else {
            echo "<br/><br/>Sorry, there was an error uploading your file.";
        }
    }
}