WordPress.org

Make WordPress Core

Ticket #6035: 6035.diff

File 6035.diff, 2.5 KB (added by Denis-de-Bernardy, 6 years ago)
  • wp-admin/import/wp-cat2tag.php

     
    108108<ul style="list-style:none"> 
    109109 
    110110<?php   $hier = _get_term_hierarchy('category'); 
     111                 $default = get_option('default_category'); 
    111112 
    112113                foreach ($this->all_categories as $category) { 
    113114                        $category = sanitize_term( $category, 'category', 'display' ); 
    114115 
    115                         if ( (int) $category->parent == 0 ) { ?> 
     116                        if ( ((int) $category->parent == 0 ) && ( $category->term_id != $default )) { ?> 
    116117 
    117118        <li><label><input type="checkbox" name="cats_to_convert[]" value="<?php echo intval($category->term_id); ?>" /> <?php echo $category->name . ' (' . $category->count . ')'; ?></label><?php 
    118119 
     
    224225                        return false; 
    225226                } 
    226227        } 
     228         
     229        function set_default_category() { 
     230                global $wpdb; 
     231                 
     232                $default_cat_id = (int) get_option('default_category'); 
     233                 
     234                if ( !$default_cat_id ) 
     235                        return; 
     236                 
     237                $default_cat = get_term_by('term_id', $default_cat_id, 'category'); 
     238                $tt_ids = array($default_cat->term_taxonomy_id); 
     239                $terms = array($default_cat->term_id); 
     240                 
     241                # mass fetch ids 
     242                $post_ids = $wpdb->get_results(" 
     243                        SELECT  posts.ID 
     244                        FROM    $wpdb->posts as posts 
     245                        LEFT JOIN $wpdb->term_relationships as term_relationships 
     246                        ON              term_relationships.object_id = posts.ID 
     247                        AND             term_relationships.term_taxonomy_id = $default_cat->term_taxonomy_id 
     248                        WHERE   post_type = 'post' 
     249                        AND             term_relationships.object_id IS NULL 
     250                        "); 
     251                 
     252                # mass insert relationships 
     253                $wpdb->query(" 
     254                        INSERT INTO $wpdb->term_relationships ( object_id, term_taxonomy_id ) 
     255                        SELECT  posts.ID, $default_cat->term_taxonomy_id 
     256                        FROM    $wpdb->posts as posts 
     257                        LEFT JOIN $wpdb->term_relationships as term_relationships 
     258                        ON              term_relationships.object_id = posts.ID 
     259                        AND             term_relationships.term_taxonomy_id = $default_cat->term_taxonomy_id 
     260                        WHERE   posts.post_type = 'post' 
     261                        AND             term_relationships.object_id IS NULL 
     262                        "); 
     263                 
     264                # update count in one go 
     265                wp_update_term_count_now($tt_ids, 'category'); 
     266                 
     267                # mass do_action 
     268                foreach ( $post_ids as $object_id ) { 
     269                        do_action('set_object_terms', $object_id, $terms, $tt_ids, 'category', false); 
     270                } 
     271                 
     272                echo __('Set default category on orphaned posts.') 
     273        } 
    227274 
    228275        function convert_categories() { 
    229276                global $wpdb; 
     
    322369                        } 
    323370                } 
    324371                echo '</ul>'; 
     372                 
     373                $this->set_default_category(); 
    325374 
    326375                if ( ! empty($clean_term_cache) ) { 
    327376                        $clean_term_cache = array_unique(array_values($clean_term_cache));