WordPress.org

Make WordPress Core

Ticket #21710: 21710.1.diff

File 21710.1.diff, 4.8 KB (added by batmoo, 3 years ago)
  • wordpress-importer.php

     
    393393         * Doesn't create a new category if its slug already exists 
    394394         */ 
    395395        function process_categories() { 
     396                $this->categories = apply_filters( 'wp_import_categories', $this->categories ); 
     397 
    396398                if ( empty( $this->categories ) ) 
    397399                        return; 
    398400 
     
    437439         * Doesn't create a tag if its slug already exists 
    438440         */ 
    439441        function process_tags() { 
     442                $this->tags = apply_filters( 'wp_import_tags', $this->tags ); 
     443 
    440444                if ( empty( $this->tags ) ) 
    441445                        return; 
    442446 
     
    475479         * Doesn't create a term its slug already exists 
    476480         */ 
    477481        function process_terms() { 
     482                $this->terms = apply_filters( 'wp_import_terms', $this->terms ); 
     483 
    478484                if ( empty( $this->terms ) ) 
    479485                        return; 
    480486 
     
    522528         * Note that new/updated terms, comments and meta are imported for the last of the above. 
    523529         */ 
    524530        function process_posts() { 
     531                $this->posts = apply_filters( 'wp_import_posts', $this->posts ); 
     532 
    525533                foreach ( $this->posts as $post ) { 
     534                        $post = apply_filters( 'wp_import_post_data_raw', $post ); 
     535 
    526536                        if ( ! post_type_exists( $post['post_type'] ) ) { 
    527537                                printf( __( 'Failed to import “%s”: Invalid post type %s', 'wordpress-importer' ), 
    528538                                        esc_html($post['post_title']), esc_html($post['post_type']) ); 
    529539                                echo '<br />'; 
     540                                do_action( 'wp_import_post_exists', $post ); 
    530541                                continue; 
    531542                        } 
    532543 
     
    578589                                        'post_type' => $post['post_type'], 'post_password' => $post['post_password'] 
    579590                                ); 
    580591 
     592                                $postdata = apply_filters( 'wp_import_post_data_processed', $postdata, $post ); 
     593 
    581594                                if ( 'attachment' == $postdata['post_type'] ) { 
    582595                                        $remote_url = ! empty($post['attachment_url']) ? $post['attachment_url'] : $post['guid']; 
    583596 
     
    597610                                        $comment_post_ID = $post_id = $this->process_attachment( $postdata, $remote_url ); 
    598611                                } else { 
    599612                                        $comment_post_ID = $post_id = wp_insert_post( $postdata, true ); 
     613                                        do_action( 'wp_import_insert_post', $post_id, $original_post_ID, $postdata, $post ); 
    600614                                } 
    601615 
    602616                                if ( is_wp_error( $post_id ) ) { 
     
    615629                        // map pre-import ID to local ID 
    616630                        $this->processed_posts[intval($post['post_id'])] = (int) $post_id; 
    617631 
     632                        if ( ! isset( $post['terms'] ) ) 
     633                                $post['terms'] = array(); 
     634 
     635                        $post['terms'] = apply_filters( 'wp_import_post_terms', $post['terms'], $post_id, $post ); 
     636 
    618637                        // add categories, tags and other terms 
    619638                        if ( ! empty( $post['terms'] ) ) { 
    620639                                $terms_to_set = array(); 
     
    627646                                                $t = wp_insert_term( $term['name'], $taxonomy, array( 'slug' => $term['slug'] ) ); 
    628647                                                if ( ! is_wp_error( $t ) ) { 
    629648                                                        $term_id = $t['term_id']; 
     649                                                        do_action( 'wp_import_insert_term', $t, $term, $post_id, $post ); 
    630650                                                } else { 
    631651                                                        printf( __( 'Failed to import %s %s', 'wordpress-importer' ), esc_html($taxonomy), esc_html($term['name']) ); 
    632652                                                        if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) 
    633653                                                                echo ': ' . $t->get_error_message(); 
    634654                                                        echo '<br />'; 
     655                                                        do_action( 'wp_import_insert_term_failed', $t, $term, $post_id, $post ); 
    635656                                                        continue; 
    636657                                                } 
    637658                                        } 
     
    640661 
    641662                                foreach ( $terms_to_set as $tax => $ids ) { 
    642663                                        $tt_ids = wp_set_post_terms( $post_id, $ids, $tax ); 
     664                                        do_action( 'wp_import_set_post_terms', $tt_ids, $ids, $tax, $post_id, $post ); 
    643665                                } 
    644666                                unset( $post['terms'], $terms_to_set ); 
    645667                        } 
    646668 
     669                        if ( ! isset( $post['comments'] ) ) 
     670                                $post['comments'] = array(); 
     671 
     672                        $post['comments'] = apply_filters( 'wp_import_post_comments', $post['comments'], $post_id, $post ); 
     673 
    647674                        // add/update comments 
    648675                        if ( ! empty( $post['comments'] ) ) { 
    649676                                $num_comments = 0; 
     
    674701                                                        $comment['comment_parent'] = $inserted_comments[$comment['comment_parent']]; 
    675702                                                $comment = wp_filter_comment( $comment ); 
    676703                                                $inserted_comments[$key] = wp_insert_comment( $comment ); 
     704                                                do_action( 'wp_import_insert_comment', $inserted_comments[$key], $comment, $comment_post_ID, $post ); 
    677705 
    678706                                                foreach( $comment['commentmeta'] as $meta ) { 
    679707                                                        $value = maybe_unserialize( $meta['value'] ); 
     
    686714                                unset( $newcomments, $inserted_comments, $post['comments'] ); 
    687715                        } 
    688716 
     717                        if ( ! isset( $post['postmeta'] ) ) 
     718                                $post['postmeta'] = array(); 
     719 
     720                        $post['postmeta'] = apply_filters( 'wp_import_post_meta', $post['postmeta'], $post_id, $post ); 
     721 
    689722                        // add/update post meta 
    690                         if ( isset( $post['postmeta'] ) ) { 
     723                        if ( ! empty( $post['postmeta'] ) ) { 
    691724                                foreach ( $post['postmeta'] as $meta ) { 
    692                                         $key = apply_filters( 'import_post_meta_key', $meta['key'] ); 
     725                                        $key = apply_filters( 'import_post_meta_key', $meta['key'], $post_id, $post ); 
    693726                                        $value = false; 
    694727 
    695728                                        if ( '_edit_last' == $key ) {