WordPress.org

Make WordPress Core

Ticket #14847: featured_image_import.diff

File featured_image_import.diff, 1.7 KB (added by Nano8Blazex, 5 years ago)

patch gci

  • wordpress-importer.php

     
    5454 
    5555        var $fetch_attachments = false; 
    5656        var $url_remap = array(); 
     57        var $id_remap = array(); 
     58        var $thumb_posts = array(); 
    5759 
    5860        function WP_Import() { /* nothing */ } 
    5961 
     
    600602 
    601603                                                update_post_meta( $post_id, $key, $value ); 
    602604                                                do_action( 'import_post_meta', $post_id, $key, $value ); 
     605                                                 
     606                                                // if the post has a featured image, take note of this in case of remap 
     607                                                if ( $key == '_thumbnail_id' ) { 
     608                                                        // store the post id and value 
     609                                                        $this->thumb_posts[$post_id] = $value; 
     610                                                } 
    603611                                        } 
    604612                                } 
    605613                        } 
     
    732740                        $name = basename($parts['basename'], ".{$ext}"); 
    733741                        $this->url_remap[$parts['dirname'] . '/' . $name . '.thumbnail.' . $ext] = $thumb_url; 
    734742                } 
     743                 
     744                //If the id of the attachment changed, remap it 
     745                if ($post_id != $post['import_id']) {  
     746                        $this->id_remap[$post['import_id']] = $post_id; 
     747                } 
    735748 
    736749                return $post_id; 
    737750        } 
     
    852865                        // remap enclosure urls 
    853866                        $result = $wpdb->query( $wpdb->prepare("UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, %s, %s) WHERE meta_key='enclosure'", $from_url, $to_url) ); 
    854867                } 
     868                 
     869                // Cycle through posts that have a featured image 
     870                foreach ( $this->thumb_posts as $post_id => $value ) { 
     871                        // Check if its metadata needs updating 
     872                        foreach ( $this->id_remap as $orig_id => $new_id ) { 
     873                                if ( $value == $orig_id ) { 
     874                                        // update metadata and break to next post 
     875                                        $value = $new_id; 
     876                                        update_post_meta( $post_id, '_thumbnail_id', $new_id ); 
     877                                        break; 
     878                                } 
     879                        } 
     880                } 
    855881        } 
    856882 
    857883        /**