The blog copier is a WP Multisite tool to copy a template blog to a new blog. All content and settings will be copied from the source blog to the new blog.
Enable the blog copier by registering the Blog_Copier_Definer
and Blog_Copier_Subscriber
in the
core plugin. The lines to do so should already exist, conditionally loaded,
in \Tribe\Project\Core::extend_definers()
and \Tribe\Project\Core::extend_subscribers()
.
Once enabled, the blog copier can be accessed in the network admin, under the "Sites" menu.
The blog copier depends on queues for processing. Initiating a copy adds a task to the queue to run the first step of the copy. As each step completes, it will add the next step to the queue.
The configuration for the copy is stored as JSON in the content of a hidden post on blog 1. This JSON is a
representation of a Copy_Configuration
object. Each task will be passed the post ID of this object, which it can
reference for the original form submission data (e.g., what is the new blog's domain?) or for state that has been
built by previous steps in the process (e.g., what is the new blog's ID?).
The tasks that need to run for the copy are defined in a Task_Chain
object, configured in the Blog_Copier_Definer
.
If you need to add additional steps to the copy, create a new Task
for that step and set up a new definer
to override the value of \Tribe\Libs\Blog_Copier\Blog_Copier_Definer::TASK_CHAIN
As each task finishes, it must trigger an action to signify that it has completed, passing the class name of the task
and the args that were originally passed to the Task
's handle()
method.
do_action( Copy_Manager::TASK_COMPLETE_ACTION, static::class, $args );
If the action has failed and the copy cannot continue, trigger the failure action, passing a WP_Error object as the third parameter to the action.
do_action( Copy_Manager::TASK_ERROR_ACTION, static::class, $args, $error );
Some tests require multisite to run successfully. To enable these tests, run the integration test suite with the
flag --env multisite
.