Go to file
Felix Arntz 1795dbe25a Multisite: Introduce a site initialization and uninitialization API.
This changeset makes the new CRUD API for sites introduced in [43548] usable for real-world sites. A new function `wp_initialize_site()`, which takes care of creating a site's database tables and populating them with initial values, is hooked into the site insertion process that is initiated when calling `wp_insert_site()`. Similarly, a new function `wp_uninitialize_site()`, which takes care of dropping a site's database tables, is hooked into the site deletion process that is initiated when calling `wp_delete_site()`.

A new function `wp_is_site_initialized()` completes the API, allowing to check whether a site is initialized. Since this function always makes a database request in its default behavior, it should be called with caution. Plugins that would like to use site initialization in special ways can leverage a `pre_wp_is_site_initialized` filter to alter that default behavior.

The separate handling of the site's row in the `wp_blogs` database table and the actual site setup allows for more flexibility in controlling whether or how a site's data is set up. For example, a unit test that only checks data from the site's database table row can unhook the site initialization process to improve performance. At the same time, developers consuming the new sites API only need to know about the CRUD functions, since the initialization and uninitialization processes happen internally.

With this changeset, the foundation for a sites REST API endpoint is fully available. The previously recommended functions `wpmu_create_blog()` and `wpmu_delete_blog()` now call the new respective function internally. Further follow-up work to this includes replacing calls to `wpmu_create_blog()` with `wp_insert_site()`, `update_blog_details()` with `wp_update_site()` and `wpmu_delete_blog()` with `wp_delete_blog()` throughout the codebase.

As a side-effect of this work, the `wpmu_new_blog`, `delete_blog`, and `deleted_blog` actions and the `install_blog()` function have been deprecated.

Fixes #41333. See #40364.


git-svn-id: https://develop.svn.wordpress.org/trunk@43654 602fd350-edb4-49c9-b593-d223f7449a82
2018-09-24 15:08:32 +00:00
src Multisite: Introduce a site initialization and uninitialization API. 2018-09-24 15:08:32 +00:00
tests Multisite: Introduce a site initialization and uninitialization API. 2018-09-24 15:08:32 +00:00
tools/i18n Remove the `svn:executable` property from files that don't need it. 2017-11-17 02:57:27 +00:00
.editorconfig General: Instruct file editors not to trim trailing whitespace in markdown files. 2018-03-20 22:14:53 +00:00
.gitignore Build/Tools: Update PHPCS ruleset for WP Core and related Composer setup. 2018-06-15 15:56:58 +00:00
.jshintrc General: Remove `.jshintrc` and `*.json` from the 2-space-indent `.editorconfig` group. 2017-10-12 01:57:45 +00:00
.npmrc Once upon a midnight dreary, while I coded, weak and weary, 2018-05-23 10:04:22 +00:00
.nvmrc Once upon a midnight dreary, while I coded, weak and weary, 2018-05-23 10:04:22 +00:00
.travis.yml Build/Test Tools: Implement the automatic retry functionality that Travis CI provides. 2018-09-15 09:21:55 +00:00
Gruntfile.js Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:50:26 +00:00
composer.json Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:50:26 +00:00
composer.lock Coding Standards: Upgrade WPCS to 1.0.0 2018-08-17 01:50:26 +00:00
jsdoc.conf.json Build Tools: Fix JSDoc configuration include paths. 2018-06-14 12:45:06 +00:00
package-lock.json Revert accidental change to `package-lock.json` introduced in [43571]. 2018-09-12 05:42:13 +00:00
package.json Emoji: Update Twemoji to version 11.0. 2018-06-20 04:20:32 +00:00
phpcs.xml.dist Upgrade/Install: Properly exclude the `admin/includesSchema.php` tests file for the `WordPress.DB.PreparedSQL.NotPrepared` sniff. 2018-09-14 07:54:53 +00:00
phpunit.xml.dist Build/Test Tools: Allow code coverage reports to be generated. 2018-02-07 22:20:25 +00:00
webpack.config.dev.js Once upon a midnight dreary, while I coded, weak and weary, 2018-05-23 10:04:22 +00:00
webpack.config.prod.js Once upon a midnight dreary, while I coded, weak and weary, 2018-05-23 10:04:22 +00:00
wp-cli.yml Tools: Update `wp-cli.yml` to point to the `build` directory. 2018-05-25 00:14:14 +00:00
wp-config-sample.php Code is Poetry. 2017-11-30 23:09:33 +00:00
wp-tests-config-sample.php Build/Test Tools: Roses are red, this fixes stuff. 2018-05-23 17:54:44 +00:00