PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.1
Elementor Website Builder – more than just a page builder v4.3.1
4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 All 455 releases
← All changes | modules/global-classes/global-classes-repository.php +16 -3 4.3.0-beta2 → 4.3.1 View file →
@@ -143,11 +143,9 @@
143 143 $labels->set_labels( $final_label_map );
144 144
145 145 if ( ! $is_preview ) {
146 146 Global_Classes_Sync_Map::make( $this->get_kit() )->apply_changes( $touched_items, $to_delete );
147 - Global_Classes_Order::make( $this->get_kit() )
148 - ->set_preview( true )
149 - ->set_order( $order );
147 + $this->propagate_order_to_preview( $order, $to_delete );
150 148
151 149 $this->bulk_clear_preview_meta( array_values( $to_update ) );
152 150 $this->clear_preview_labels_for_ids( array_merge(
153 151 array_values( $to_create ),
@@ -173,8 +171,23 @@
173 171 $to_delete,
174 172 $affected_post_ids
175 173 );
176 174 }
175 + }
176 +
177 + private function propagate_order_to_preview( array $published_order, array $deleted_ids ): void {
178 + $preview_order = Global_Classes_Order::make( $this->get_kit() )->set_preview( true );
179 + $existing_order = $preview_order->get_order();
180 + $unpublished_ids = array_flip( array_diff( $existing_order, $published_order, $deleted_ids ) );
181 + $merged_order = $published_order;
182 +
183 + foreach ( $existing_order as $position => $id ) {
184 + if ( isset( $unpublished_ids[ $id ] ) ) {
185 + array_splice( $merged_order, min( $position, count( $merged_order ) ), 0, [ $id ] );
186 + }
187 + }
188 +
189 + $preview_order->set_order( $merged_order );
177 190 }
178 191
179 192 public function each_item( callable $cb, bool $skip_migration = false, int $batch_size = self::READ_BATCH_SIZE ): void {
180 193 $order = Global_Classes_Order::make( $this->get_kit() )->get_order();