Plugin Directory

Changeset 3349173


Ignore:
Timestamp:
08/24/2025 09:13:36 AM (6 months ago)
Author:
kovalchik8
Message:

Polylang adapter fixes related to term parent and term translations

Location:
magic-export-import
Files:
58 added
8 edited

Legend:

Unmodified
Added
Removed
  • magic-export-import/trunk/class-magic-ex-im-setup.php

    r3310897 r3349173  
    33 * Plugin Name: Magic Export & Import
    44 * Description: The ultimate tool to migrate any content including posts, terms, users, comments, WooCommerce shop orders, menus and ACF Options pages.
    5  * Version: 1.1.0
     5 * Version: 1.1.1
    66 * Requires at least: 6.2
    77 * Requires PHP: 7.4
  • magic-export-import/trunk/includes/class-magic-ex-im-data.php

    r3310897 r3349173  
    282282     */
    283283    public static function set_import_deferred_data() {
    284         $processing_item_id = self::get_processing_item_id();
    285 
    286         if ( ! self::$deferred_data || ! $processing_item_id ) {
     284        $item_id = self::get_processing_item_id();
     285
     286        if ( ! self::$deferred_data || ! $item_id ) {
    287287            return;
    288288        }
    289289
    290         $deferred_data                          = self::get_import_deferred_data();
    291         $deferred_data[ $processing_item_id ] ??= array();
    292 
    293         $deferred_data[ $processing_item_id ] = array_merge(
    294             $deferred_data[ $processing_item_id ],
     290        $deferred_data               = self::get_import_deferred_data();
     291        $deferred_data[ $item_id ] ??= array();
     292
     293        $deferred_data[ $item_id ] = array_merge(
     294            $deferred_data[ $item_id ],
    295295            self::$deferred_data
    296296        );
     
    303303    /**
    304304     * Gets deferred data.
     305     *
     306     * @return array
    305307     */
    306308    public static function get_import_deferred_data() {
  • magic-export-import/trunk/includes/class-magic-ex-im-type.php

    r3310897 r3349173  
    916916                // Process deferred items data.
    917917            } elseif ( ! $this->import_progress['deferred_items_processed'] ) {
    918                 $deferred_items = Magic_EX_IM_Data::get_import_deferred_data();
     918
     919                $deferred_items = apply_filters( 'magic_im_deferred_items', Magic_EX_IM_Data::get_import_deferred_data() );
    919920
    920921                foreach ( $deferred_items as $item_id => $item_data ) {
     
    10811082
    10821083            // Skip item if user don't allow to update existing items and not deferred items are processed.
    1083             if ( magic_ex_im_get_user_params( 'skip-existing-items' ) && ! $this->import_result['file_items_processed'] ) {
     1084            if ( magic_ex_im_get_user_params( 'skip-existing-items' ) && ! $this->import_progress['file_items_processed'] ) {
    10841085
    10851086                ++$this->import_progress['skipped'];
  • magic-export-import/trunk/includes/magic-types/class-magic-ex-im-type-posts.php

    r3310897 r3349173  
    273273
    274274        add_filter( 'magic_ex_maybe_adjust_value', array( $this, 'adjust_value' ), 5, 3 );
     275        add_filter( 'magic_im_deferred_items', array( $this, 'magic_im_deferred_items' ) );
     276    }
     277
     278    /**
     279     * Processes filter hook 'magic_im_deferred_items'.
     280     *
     281     * @param array[] $data Deferred items data with key as item ID and value as item data.
     282     * @return array
     283     */
     284    public function magic_im_deferred_items( $data ) {
     285
     286        // Set mandatory keys to the deferred items data.
     287        foreach ( $data as $item_id => &$item_data ) {
     288            $item_data['post']['post_name'] ??= get_post_field( 'post_name', $item_id );
     289        }
     290
     291        return $data;
    275292    }
    276293
  • magic-export-import/trunk/includes/magic-types/class-magic-ex-im-type-terms.php

    r3310897 r3349173  
    121121
    122122        add_filter( 'magic_ex_maybe_adjust_value', array( $this, 'adjust_value' ), 5, 3 );
     123        add_filter( 'magic_im_deferred_items', array( $this, 'magic_im_deferred_items' ) );
     124    }
     125
     126    /**
     127     * Processes filter hook 'magic_im_deferred_items'.
     128     *
     129     * @param array[] $data Deferred items data with key as item ID and value as item data.
     130     * @return array
     131     */
     132    public function magic_im_deferred_items( $data ) {
     133
     134        // Set mandatory keys to the deferred items data.
     135        foreach ( $data as $item_id => &$item_data ) {
     136            $item_data['term']['slug'] ??= get_term_field( 'slug', $item_id, $this->magic_item );
     137        }
     138
     139        return $data;
    123140    }
    124141
  • magic-export-import/trunk/includes/plugin-adapters/class-magic-ex-im-adapter-polylang.php

    r3310897 r3349173  
    6868        add_filter( 'magic_im_item_data_taxonomy', array( $this, 'translate_term' ), 10, 2 );
    6969        add_filter( 'pre_update_option_theme_mods_' . get_stylesheet(), array( $this, 'pre_update_option_theme_mods' ) );
     70        add_filter( 'magic_im_deferred_items', array( $this, 'magic_im_deferred_items' ) );
     71
     72        global $polylang;
     73
     74        if ( isset( $polylang->sync ) ) {
     75            remove_action( 'created_term', array( $polylang->sync, 'sync_term_parent' ), 10 );
     76            remove_action( 'edited_term', array( $polylang->sync, 'sync_term_parent' ), 10 );
     77        }
     78    }
     79
     80    /**
     81     * Processes filter hook 'magic_im_deferred_items'.
     82     *
     83     * @param array[] $data Deferred items data with key as item ID and value as item data.
     84     * @return array
     85     */
     86    public function magic_im_deferred_items( $data ) {
     87
     88        // Add mandatory Polylang keys to the deferred items.
     89        if ( $this->is_translated_item() && $data ) {
     90            foreach ( $data as $item_id => &$item_data ) {
     91                $item_data[ self::KEYS_GROUP ]['language'] ??= $this->get_item_lang( $item_id );
     92            }
     93        }
     94
     95        return $data;
     96    }
     97
     98    /**
     99     * Gets the language of a processing item.
     100     *
     101     * @param int $item_id Item ID.
     102     * @return string
     103     */
     104    private function get_item_lang( $item_id ) {
     105
     106        if ( 'terms' === magic_ex_im_get_magic_type() ) {
     107            $lang = pll_get_term_language( $item_id );
     108        }
     109
     110        if ( 'posts' === magic_ex_im_get_magic_type() ) {
     111            $lang = pll_get_post_language( $item_id );
     112
     113            if ( ! $lang && has_post_parent( $item_id ) ) {
     114                $post_parent_id = get_post_field( 'post_parent', $item_id );
     115                $lang           = pll_get_post_language( $post_parent_id );
     116            }
     117        }
     118
     119        return $lang ?? '';
    70120    }
    71121
     
    236286            // Set item language as code.
    237287            case 'language':
    238                 if ( 'terms' === magic_ex_im_get_magic_type() ) {
    239                     $key_data = pll_get_term_language( $item_id );
    240                 }
    241 
    242                 if ( 'posts' === magic_ex_im_get_magic_type() ) {
    243                     $key_data = pll_get_post_language( $item_id );
    244 
    245                     if ( ! $key_data && has_post_parent( $item_id ) ) {
    246                         $post_parent_id = get_post_field( 'post_parent', $item_id );
    247                         $key_data       = pll_get_post_language( $post_parent_id );
    248                     }
    249                 }
    250 
     288                $key_data = $this->get_item_lang( $item_id );
    251289                break;
    252290
     
    542580                    if ( $lang_code === $this->get_lang() ) {
    543581                        $term_translations[ $lang_code ] = $item_id;
    544                         continue;
    545                     }
    546 
    547                     $term_id = get_term_by( 'slug', $term_slug, magic_ex_im_get_magic_item() )->term_id ?? '';
    548 
    549                     if ( $term_id && $this->is_installed_lang( $lang_code ) ) {
    550                         $term_translations[ $lang_code ] = pll_get_term( $term_id, $lang_code );
     582
     583                    } elseif ( $this->is_installed_lang( $lang_code ) ) {
     584
     585                        $term_translations[ $lang_code ] = get_terms(
     586                            array(
     587                                'name'       => $term_slug,
     588                                'taxonomy'   => magic_ex_im_get_magic_item(),
     589                                'hide_empty' => false,
     590                                'fields'     => 'ids',
     591                                'lang'       => $lang_code,
     592                            )
     593                        )[0] ?? 0;
    551594                    }
    552595                }
  • magic-export-import/trunk/readme.txt

    r3310897 r3349173  
    44Tags: export, import, content migration, csv, custom fields
    55Tested up to: 6.8
    6 Stable tag: 1.1.0
     6Stable tag: 1.1.1
    77License: GPL v3 or later
    88License URI: https://www.gnu.org/licenses/gpl-3.0.txt
     
    7979== Changelog ==
    8080
     81= 1.1.1 =
     82* Polylang adapter fixes related to term parent and term translations
     83
    8184= 1.1.0 =
    8285* Added support for WordPress menus export and import
  • magic-export-import/trunk/template-parts/page-content.php

    r3220340 r3349173  
    224224    <div id="magic-ex-im-footer">
    225225        <p>
     226            If you find this plugin helpful, please consider <a
     227                href="https://wordpress.org/support/plugin/magic-export-import/reviews/" target="_blank"
     228                rel="noopener noreferrer">leaving a review</a> to help others discover it.
     229        </p>
     230        <p>
    226231            For assistance, cooperation proposals or sponsorship opportunities, feel free to reach out via email
    227232            <a href="mailto:[email protected]" target="_blank"
Note: See TracChangeset for help on using the changeset viewer.