| @@ -137,12 +137,16 @@ | ||
| 137 | 137 | |
| 138 | 138 | public function create_new_kit( $kit_name = '', $settings = [], $active = true ) { |
| 139 | 139 | $kit_name = $kit_name ? $kit_name : esc_html__( 'Custom', 'elementor' ); |
| 140 | 140 | |
| 141 | + $current_kit = $this->get_active_kit(); | |
| 142 | + | |
| 143 | + $kit_meta_data = $this->get_meta_to_preserve( $current_kit ); | |
| 144 | + | |
| 141 | 145 | $id = $this->create( [ |
| 142 | 146 | 'post_title' => $kit_name, |
| 143 | 147 | 'settings' => $settings, |
| 144 | - ] ); | |
| 148 | + ], $kit_meta_data ); | |
| 145 | 149 | |
| 146 | 150 | if ( $active ) { |
| 147 | 151 | update_option( self::OPTION_PREVIOUS, $this->get_active_id() ); |
| 148 | 152 | update_option( self::OPTION_ACTIVE, $id ); |
| @@ -147,9 +151,30 @@ | ||
| 147 | 151 | update_option( self::OPTION_PREVIOUS, $this->get_active_id() ); |
| 148 | 152 | update_option( self::OPTION_ACTIVE, $id ); |
| 149 | 153 | } |
| 150 | 154 | |
| 155 | + do_action( 'elementor/kit/after_new_kit_created', [ | |
| 156 | + 'new_kit_id' => $id, | |
| 157 | + 'previous_kit_id' => $current_kit->get_post()->ID, | |
| 158 | + ] ); | |
| 159 | + | |
| 151 | 160 | return $id; |
| 161 | + } | |
| 162 | + | |
| 163 | + private function get_meta_to_preserve( Kit $current_kit ): array { | |
| 164 | + $meta_keys_to_preserve = apply_filters( 'elementor/kit/meta_to_preserve_on_kit_import', [] ); | |
| 165 | + | |
| 166 | + $kit_meta_data = []; | |
| 167 | + | |
| 168 | + foreach ( $meta_keys_to_preserve as $meta_key ) { | |
| 169 | + $value = $current_kit->get_meta( $meta_key ); | |
| 170 | + | |
| 171 | + if ( ! empty( $value ) ) { | |
| 172 | + $kit_meta_data[ $meta_key ] = $value; | |
| 173 | + } | |
| 174 | + } | |
| 175 | + | |
| 176 | + return $kit_meta_data; | |
| 152 | 177 | } |
| 153 | 178 | |
| 154 | 179 | public function create_default() { |
| 155 | 180 | return $this->create( [ |