WordPress.org

Make WordPress Core

Ticket #14847: featured_image_import.diff

File featured_image_import.diff, 1.7 KB (added by Nano8Blazex, 7 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        /**