WP_Import::process_tags PHP Method

process_tags() public method

Doesn't create a tag if its slug already exists
public process_tags ( )
        function process_tags()
        {
            $this->tags = apply_filters('wp_import_tags', $this->tags);
            if (empty($this->tags)) {
                return;
            }
            foreach ($this->tags as $tag) {
                // if the tag already exists leave it alone
                $term_id = term_exists($tag['tag_slug'], 'post_tag');
                if ($term_id) {
                    if (is_array($term_id)) {
                        $term_id = $term_id['term_id'];
                    }
                    if (isset($tag['term_id'])) {
                        $this->processed_terms[intval($tag['term_id'])] = (int) $term_id;
                    }
                    continue;
                }
                $tag_desc = isset($tag['tag_description']) ? $tag['tag_description'] : '';
                $tagarr = array('slug' => $tag['tag_slug'], 'description' => $tag_desc);
                $id = wp_insert_term($tag['tag_name'], 'post_tag', $tagarr);
                if (!is_wp_error($id)) {
                    if (isset($tag['term_id'])) {
                        $this->processed_terms[intval($tag['term_id'])] = $id['term_id'];
                    }
                } else {
                    printf(__('Failed to import post tag %s', 'wordpress-importer'), esc_html($tag['tag_name']));
                    if (defined('IMPORT_DEBUG') && IMPORT_DEBUG) {
                        echo ': ' . $id->get_error_message();
                    }
                    echo '<br />';
                    continue;
                }
            }
            unset($this->tags);
        }

Usage Example

 public function wpImportContents($file)
 {
     $wp_import = new WP_Import();
     $wp_import->fetch_attachments = false;
     // doesn matter
     // load data from saved option
     $wp_import->post_orphans = get_option('_cri_post_orphans', array());
     $wp_import->processed_posts = get_option('_cri_processed_posts', array());
     $wp_import->url_remap = get_option('_cri_url_remap', array());
     // the odd filter
     add_filter('import_post_meta_key', array($wp_import, 'is_valid_meta_key'));
     add_filter('http_request_timeout', array(&$wp_import, 'bump_request_timeout'));
     // start buffer
     ob_start();
     // parse file and gather data
     $wp_import->import_start($file);
     // map author
     $wp_import->get_author_mapping();
     wp_suspend_cache_invalidation(true);
     $wp_import->process_categories();
     $wp_import->process_tags();
     $wp_import->process_terms();
     $wp_import->process_posts();
     wp_suspend_cache_invalidation(false);
     // update incorrect/missing information in the DB
     $wp_import->backfill_parents();
     $wp_import->backfill_attachment_urls();
     $wp_import->remap_featured_images();
     // end has output, so buffer it out
     $wp_import->import_end();
     // ignore the output, call in buffer
     do_action('radium_after_content_import');
     ob_end_clean();
     // delete all attachment related stats
     foreach (array('_cri_post_orphans', '_cri_processed_posts', '_cri_url_remap') as $op) {
         delete_option($op);
     }
     return true;
 }