PluginProbe
Gutenberg / 23.8.0
Gutenberg v23.8.0
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / lib / upgrade.php

upgrade.php in Gutenberg 23.8.0, at lib/upgrade.php

85 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Upgrading Gutenberg's database.
4 *
5 * @package gutenberg
6 */
7
8 if ( ! defined( '_GUTENBERG_VERSION_MIGRATION' ) ) {
9 // It's necessary to update this version every time a new migration is needed.
10 define( '_GUTENBERG_VERSION_MIGRATION', '23.8.0' );
11 }
12
13 /**
14 * Migrate Gutenberg's database on upgrade.
15 *
16 * @access private
17 * @internal
18 */
19 function _gutenberg_migrate_database() {
20 // The default value used here is the first version before migrations were added.
21 $gutenberg_installed_version = get_option( 'gutenberg_version_migration', '9.7.0' );
22
23 if ( _GUTENBERG_VERSION_MIGRATION !== $gutenberg_installed_version ) {
24 if ( version_compare( $gutenberg_installed_version, '9.8.0', '<' ) ) {
25 _gutenberg_migrate_remove_fse_drafts();
26 }
27
28 if ( version_compare( $gutenberg_installed_version, '23.8.0', '<' ) ) {
29 _gutenberg_migrate_remove_legacy_collaboration_options();
30 }
31
32 update_option( 'gutenberg_version_migration', _GUTENBERG_VERSION_MIGRATION );
33 }
34 }
35
36 /**
37 * Remove FSE auto drafts and associated terms.
38 *
39 * @access private
40 * @internal
41 */
42 function _gutenberg_migrate_remove_fse_drafts() {
43 // Delete auto-draft templates and template parts.
44 $delete_query = new WP_Query(
45 array(
46 'post_status' => array( 'auto-draft' ),
47 'post_type' => array( 'wp_template', 'wp_template_part' ),
48 'posts_per_page' => -1,
49 )
50 );
51 foreach ( $delete_query->posts as $post ) {
52 wp_delete_post( $post->ID, true );
53 }
54
55 // Delete _wp_file_based term.
56 $term = get_term_by( 'name', '_wp_file_based', 'wp_theme' );
57 if ( $term ) {
58 wp_delete_term( $term->term_id, 'wp_theme' );
59 }
60
61 // Delete useless options.
62 delete_option( 'gutenberg_last_synchronize_theme_template_checks' );
63 delete_option( 'gutenberg_last_synchronize_theme_template-part_checks' );
64 }
65
66 /**
67 * Removes collaboration options replaced by the Real-Time Collaboration experiment.
68 *
69 * The previous values are intentionally not migrated to the experiment. Real-time
70 * collaboration is now opt-in, so existing sites must explicitly enable the
71 * experiment instead of being opted in by a legacy setting.
72 *
73 * @since 23.8.0
74 */
75 function _gutenberg_migrate_remove_legacy_collaboration_options() {
76 delete_option( 'enable_real_time_collaboration' );
77 delete_option( 'wp_enable_real_time_collaboration' );
78 delete_option( 'wp_collaboration_enabled' );
79 }
80
81 // Deletion of the `_wp_file_based` term (in _gutenberg_migrate_remove_fse_drafts) must happen
82 // after its taxonomy (`wp_theme`) is registered. This happens in `gutenberg_register_wp_theme_taxonomy`,
83 // which is hooked into `init` (default priority, i.e. 10).
84 add_action( 'init', '_gutenberg_migrate_database', 20 );
85