WordPress.org

Make WordPress Core

Ticket #21710: 21710.1.diff

File 21710.1.diff, 4.8 KB (added by batmoo, 6 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 ) {