From aa0ab82ecd5ad30b13a490239bf00ad6df9550c9 Mon Sep 17 00:00:00 2001 From: Ryan Boren Date: Fri, 24 Aug 2007 14:44:26 +0000 Subject: [PATCH] Update WP importer to use taxonomy and query cat based on slug. see #4613 git-svn-id: https://develop.svn.wordpress.org/trunk@5937 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-admin/import/wordpress.php | 9 +++++++-- wp-includes/default-filters.php | 6 ++++++ wp-includes/taxonomy.php | 8 +++++--- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/wp-admin/import/wordpress.php b/wp-admin/import/wordpress.php index d7cdf03ec6..b9631aebe3 100644 --- a/wp-admin/import/wordpress.php +++ b/wp-admin/import/wordpress.php @@ -220,7 +220,7 @@ class WP_Import { function process_categories() { global $wpdb; - $cat_names = (array) $wpdb->get_col("SELECT cat_name FROM $wpdb->categories"); + $cat_names = (array) get_terms('category', 'fields=names'); while ( $c = array_shift($this->categories) ) { $cat_name = trim($this->get_tag( $c, 'wp:cat_name' )); @@ -323,8 +323,13 @@ class WP_Import { if (count($categories) > 0) { $post_cats = array(); foreach ($categories as $category) { - $cat_ID = (int) $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories WHERE cat_name = '$category'"); + $slug = sanitize_term_field('slug', $category, 0, 'category', 'db'); + $cat = get_term_by('slug', $slug, 'category'); + $cat_ID = 0; + if ( ! empty($cat) ) + $cat_ID = $cat->term_id; if ($cat_ID == 0) { + $category = $wpdb->escape($category); $cat_ID = wp_insert_category(array('cat_name' => $category)); } $post_cats[] = $cat_ID; diff --git a/wp-includes/default-filters.php b/wp-includes/default-filters.php index 380669ef8f..ddc653f5ed 100644 --- a/wp-includes/default-filters.php +++ b/wp-includes/default-filters.php @@ -35,6 +35,12 @@ foreach ( $filters as $filter ) { add_filter($filter, 'wp_filter_kses'); } +// Slugs +$filters = array('pre_term_slug'); +foreach ( $filters as $filter ) { + add_filter($filter, 'sanitize_title'); +} + // Places to balance tags on input $filters = array('content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content'); foreach ( $filters as $filter ) { diff --git a/wp-includes/taxonomy.php b/wp-includes/taxonomy.php index b12708e37f..51c590ca45 100644 --- a/wp-includes/taxonomy.php +++ b/wp-includes/taxonomy.php @@ -282,7 +282,7 @@ function &get_term(&$term, $taxonomy, $output = OBJECT, $filter = 'raw') { * This won't appear but just a note to say that this is all conjecture and parts or whole * might be inaccurate or wrong. */ -function get_term_by($field, $value, $taxonomy, $output = OBJECT) { +function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw') { global $wpdb; if ( ! is_taxonomy($taxonomy) ) @@ -307,6 +307,8 @@ function get_term_by($field, $value, $taxonomy, $output = OBJECT) { wp_cache_add($term->term_id, $term, $taxonomy); + $term = sanitize_term($term, $taxonomy, $filter); + if ( $output == OBJECT ) { return $term; } elseif ( $output == ARRAY_A ) { @@ -487,6 +489,8 @@ function &get_terms($taxonomies, $args = '') { $select_this = 't.*, tt.*'; else if ( 'ids' == $fields ) $select_this = 't.term_id'; + else if ( 'names' == $fields ) + $select_this == 't.name'; $query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ($in_taxonomies) $where ORDER BY $orderby $order $number"; @@ -771,8 +775,6 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) { if ( empty($slug) ) $slug = sanitize_title($name); - else - $slug = sanitize_title($slug); $term_group = 0; if ( $alias_of ) {