GithubHelp home page GithubHelp logo

globalis-ms / multisite-clone-duplicator Goto Github PK

View Code? Open in Web Editor NEW
61.0 10.0 36.0 547 KB

WordPress plugin : Clones an existing site into a new one in a multisite installation : copies all the posts, settings and files

CSS 0.36% PHP 93.36% JavaScript 6.28%

multisite-clone-duplicator's Introduction

MultiSite Clone Duplicator

  • Contributors: pdargham, julienog, daviddaug, globalis
  • Tags: duplicate, clone, copy, duplication, duplicator, factory, multisite, site, blog, network, wpmu, new blog
  • Requires at least: 4.0.0
  • Tested up to: 5.0.0
  • Stable tag: 1.5.3
  • License: GPLv2 or later
  • License URI: http://www.gnu.org/licenses/gpl-2.0.html

Clones an existing site into a new one in a multisite installation : copies all posts, settings and files

Description

MultiSite Clone Duplicator adds a "Duplicate Site" functionality to your network installation.

It allows you to clone any site of your network into a new one : all data, files, users and roles can be copied.

It is useful when you want to create multiple sites from the same template : Don't waste your time copying the same configuration again and again !

Simple and user-friendly, this plugin extends WordPress core network's functionalities without polluting the dashboard.

WARNING : If you clone the primary site, you must use mucd_default_primary_tables_to_copy filter to declare plugins and custom database tables, or your cloned site won't be complete

Features:

  • Clones any site of your wordpress multisite installation
  • Copies all posts and settings
  • Generates log files (if option is checked)
  • Copy all files from duplicated site (if option is checked)
  • Keep users and roles from duplicated site (if option is checked)
  • Configure which site is clonable (so you can define an unique "pattern" site)
  • Fully hookable
  • Command line ready (provides a WP-CLI subcommand)

Installation

You can install MultiSite Clone Duplicator using the built in WordPress plugin installer. It’s easy, 2 seconds.

If you prefer download MultiSite Clone Duplicator manually :

  1. Upload multisite-clone-duplicator/ to the /wp-content/plugins/ directory
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. (Optional) Chmod 777 the logs/ directory of the plugin, if you want to activate logs
  4. Go to My Sites > Network Admin > Duplication and enjoy !
  5. (Optional) Change default options into Network dashboard > Network settings > Duplication

In the future, you'll probably want to create a dedicated "template" blog to clone from.

Frequently Asked Questions

How does it work ?

  • It creates a new user if the email was not an existing email
  • It creates a new blog with appropriate title and admin user
  • It copies all tables from cloned site, but keep some options (like title, domain, etc) of the new blog
  • It searches and replaces old site's URL and DOMAINS with the new ones
  • It copies upload directory from the old site to the upload directory of the new one (if option is checked)
  • It imports users and roles from the old site to the new one (if option is checked)

Does it support subdirectory AND subdomain installations ?

Yes, it supports both !

Can I clone the primary site ?

Yes you can, but you want to be careful : WordPress saves network tables and primary blog tables with the same prefix, and some of their data are mixed. It forces us to restrict primary blog cloning to copy only the default wp tables. If you want to change this (for example, include your plugin tables in the cloning), use mucd_default_primary_tables_to_copy filter. In the future, you want probably not to copy again and again the primary blog : use a "template" blog dedicated to clonage instead.

Does it clone plugins settings ?

Yes it does !

But some data are serialized ?

It's not a problem ! Serialized data are understood by the plugin, recursively unserialized, replaced with appropriate values, and serialized again.

After cloning, new site was created, but it goes on 404 page, why ?

Check your host / server configuration : you probably cloned your site into a domain that is not available !

How to duplicate with command line commands ?

Install WP-CLI, go to your wordpress multisite directory, and type

wp-cli site duplicate --source=<id_of_the_site_to_clone> --slug="<slug_of_the_new_site>"

Arguments are :

wp site duplicate --slug=<slug> --source=<site_id> [--title=<title>]
  [--email=<email>] [--network_id=<network-id>] [--private] [--porcelain] [--v]
  [--do_not_copy_files] [--keep_users] [--log=<dir_path>]

Which languages are currently supported?

As of now, following languages are supported : English (en_US), French (fr_FR), Spanish (es_ES), Lithuanian (lt_LT) and Greek (el). If you wish to, you can translate the interface in your own language in the standard WordPress way or with Transifex

GLOBALIS what ?

Globalis media systems is a web IT consulting company based in Paris, and a pioneer of the PHP and LAMP platform. Since 1997, we have been designing, making and maintaining Internet, intranet or mobile software. We have been working with open source CMS since 2000 and have regularly been using WordPress since 2007.

Screenshots

Screenshots on wordpress.org

Changelog

1.5.3

  • Test compatibily with Wordpress 5.0.0
  • Improvement translations
  • Fix unix file path from log directory

1.5.2

  • Fix file path on duplicate

1.5.1

  • Fix compatibility with PHP version < 5.4

1.5.0

  • Fix duplicating exponentially usermeta
  • Fix unix WP path validation and allow points
  • Remove cache flushing on error

1.4.1

  • Fix wp_cli activation

1.4.0

  • Added select2 support (Ajax dropdown when selecting site)
  • Restrict activate to network admin only (network admin area)
  • Default logs path moved in upload dir
  • Added language zh_CN
  • Bugfix : SSL compatibility

1.3.3

  • Bugfix : Compatibility : WordPress 4.7 (wp_get_sites was deprecated)

1.3.2

  • Bugfix : Check on admin referer broke some admin page

1.3.1

  • Bugfix : Compatibility with PHP 5.2

1.3.0

  • Added wp-cli site duplicate subcommand
  • Added default options in network settings pannel
  • Languages : added translation for spanish, lithuanian and greek
  • Bugfix : Using backtricks on CREATE TABLE LIKE
  • Bugfix : Remove HyperDB compat. : it made some bug on schema / table selection

1.2.0

  • Bugfix : duplication of tables without primary key / with several primary keys was causing SQL error
  • Bugfix : escape underscore characters ( '_' ) in sql queries

1.1.0

  • Bugfix : "Keep users and roles" was broken
  • Bugfix : Compatibility with plugins that use reserved mysql words in table names
  • Bugfix : Partial compatibility with HyperDB

1.0.0

  • Tested on WP 4.0.0
  • Bugfix : Compatibility with PHP 5.2
  • Bugfix : SQL Error replace mysql_real_escape_string by $wpdb->prepare
  • Bugfix : unable to delete, deactivate, etc. site when plugin is active
  • Bugfix : Fields in duplicate form lost information after validate with error

0.2.0

  • First public version released by Pierre Dargham
  • Generates logs
  • Primary site is clonable
  • Auto-suggest for admin email
  • Keep users and roles from duplicated site
  • Translating
  • Hookable

0.1.0

  • Initial version released by Julien Oger
  • Copies all the posts, settings and files from a site to a new one
  • Cannot clone primary site

Hooks


Action : mucd_before_copy_files / mucd_after_copy_files

Action before / after copying files
Args :

  1. Int : from_site_id
  2. Int : to_site_id

Action : mucd_before_copy_data / mucd_after_copy_data

Action before / after copying data
Args :

  1. Int : from_site_id
  2. Int : to_site_id

Action : mucd_before_copy_users / mucd_after_copy_users

Action before / after copying users
Args :

  1. Int : from_site_id
  2. Int : to_site_id

Filter : mucd_get_site_list_args

Filter args to retrieves a list of network sites (function get_site_list) Args :

  1. Array of ( 'param' => 'value' )

Filter : mucd_get_sites_args

Filter args to retrieves a list of network sites (function get_sites) Args :

  1. Array of ( 'param' => 'value' )

Filter : mucd_copy_blog_data_saved_options

Filter options that should be preserved in the new blog (original values from created blog will not be erased by copy of old site's tables)
Args :

  1. Array of string : option_name

Filter : mucd_default_fields_to_update

Filter fields to scan for an update after data copy
Args :

  1. Array of ( 'table_name' => array('field_1', 'field_2' ...));

Filter : mucd_default_primary_tables_to_copy

Filter tables to duplicate when duplicated site is primary site
Args :

  1. Array of string table_name

Filter : mucd_copy_dirs

Filter directories and files you want to copy
Args :

  1. Array of string : dirs
  2. Int : from_site_id
  3. Int : to_site_id

Filter : mucd_string_to_replace

Filter which strings we want to replace during update
Args :

  1. String : string_to_replace
  2. Int : from_site_id
  3. Int : to_site_id

WP-CLI arguments

Arguments are :

wp site duplicate --slug=<slug> --source=<site_id> [--title=<title>]
  [--email=<email>] [--network_id=<network-id>] [--private] [--porcelain] [--v]
  [--do_not_copy_files] [--keep_users] [--log=<dir_path>]

Thank’s

The original version of this plugin has been developed by Julien OGER who keeps following the project carefully.

Some code for search and replace in SQL serialised data were initialy taken from Lionel Pointet Wordpress Migration tool

multisite-clone-duplicator's People

Contributors

davddo avatar kant avatar pierre-dargham avatar roborourke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multisite-clone-duplicator's Issues

Unused variables

You can use PHP Mess dector (https://phpmd.org/) to detects when a variable is not used.

> ./phpmd.phar ./ text unusedcode 
multisite-clone-duplicator-develop/include/admin.php:100	Avoid unused local variables such as '$current_site'.
multisite-clone-duplicator-develop/lib/data.php:39	Avoid unused local variables such as '$to_site_prefix_length'.
multisite-clone-duplicator-develop/lib/data.php:43	Avoid unused local variables such as '$option_value'.
multisite-clone-duplicator-develop/lib/data.php:137	Avoid unused local variables such as '$col'.
multisite-clone-duplicator-develop/lib/data.php:215	Avoid unused local variables such as '$result'.
multisite-clone-duplicator-develop/lib/data.php:257	Avoid unused local variables such as '$v'.
multisite-clone-duplicator-develop/lib/duplicate.php:149	Avoid unused local variables such as '$to_site_prefix_length'.
multisite-clone-duplicator-develop/lib/functions.php:146	Avoid unused parameters such as '$locale'.
multisite-clone-duplicator-develop/wp-cli/wp-cli-site-duplicate-subcommand.php:53	Avoid unused parameters such as '$_'.
multisite-clone-duplicator-develop/wp-cli/wp-cli-site-duplicate-subcommand.php:177	Avoid unused local variables such as '$user'.

Does not work with visual composer

I suppose it's because this plugin uses no-wordpress tables like 'prefix_revslider_sliders'.

image

But I get this error (data aren't copy to that tables)

No longer works

I use to rely on this plugin for my localhost workflow when testing out my design ideas.
Your plugin last worked in April 2020 on vanilla WordPress Multisite, the most up to date version at that time, but no longer works with the current WordPress.

Flush cache when catching error

function duplicate_site,

if ( is_wp_error( $to_site_id ) ) {
wp_cache_flush();
$form_message['error'] = $to_site_id->get_error_message();
return $form_message;
}

Does not change url in table prefix_posts

Considering I have the following url in the main site
'myurl/mysite/apage.html'
I create the following subsite:
'myurl/mysite/newsubsite/'

The url is not changed and is still 'myurl/mysite/apage.html' instead of 'myurl/mysite/newsubsite/apage.html'

MUCD_Data::copy_data() doesn't correctly replace all strings

A very simple way to replicate the problem is:

  1. create a sub-directory multisite (e.g., with main site URL https://example.test)
  2. add a post to the main site that contains a gallery block (with "Link To: Attachment page")
  3. add an image to the gallery
  4. save the post
  5. duplicate the main site (e.g., with new site URL https://example.test/new-site)
  6. examine the post_content in the new site and you'll see that while the img/@src has been correctly replaced, the a/@href (and @img/@data-link) has not!

Note: this problem is not a result of plugin/theme custom tables in the main site not being duplicated.

For example, given post_content in the main site such as:

<!-- wp:gallery {"ids":[1592],"imageCrop":false,"linkTo":"attachment"} -->
<figure class="wp-block-gallery columns-1">
  <ul class="blocks-gallery-grid">
    <li class="blocks-gallery-item">
      <figure>
        <a href="https://example.test/my-post/my-image">
          <img src="https://example.test/wp-content/uploads/2019/10/my-image.jpg" alt="" data-id="1592" data-link="https://example.test/my-post/my-image/" class="wp-image-1592"/>
        </a>
        <figcaption class="blocks-gallery-item__caption">My cption</figcaption>
      </figure>
    </li>
  </ul>
</figure>
<!-- /wp:gallery -->

it should result in post_content in the new site such as:

<!-- wp:gallery {"ids":[1592],"imageCrop":false,"linkTo":"attachment"} -->
<figure class="wp-block-gallery columns-1">
  <ul class="blocks-gallery-grid">
    <li class="blocks-gallery-item">
      <figure>
        <a href="https://example.test/new-site/my-post/my-image">
          <img src="https://example.test/new-site/wp-content/uploads/sites/2/2019/10/my-image.jpg" alt="" data-id="1592" data-link="https://example.test/new-site/my-post/my-image/" class="wp-image-1592"/>
        </a>
        <figcaption class="blocks-gallery-item__caption">My cption</figcaption>
      </figure>
    </li>
  </ul>
</figure>
<!-- /wp:gallery -->

However, the actual post_content in the new site is:

<!-- wp:gallery {"ids":[1592],"imageCrop":false,"linkTo":"attachment"} -->
<figure class="wp-block-gallery columns-1">
  <ul class="blocks-gallery-grid">
    <li class="blocks-gallery-item">
      <figure>
        <a href="https://example.test/my-post/my-image">
          <img src="https://example.test/new-site/wp-content/uploads/sites/2/2019/10/my-image.jpg" alt="" data-id="1592" data-link="https://example.test/my-post/my-image/" class="wp-image-1592"/>
        </a>
        <figcaption class="blocks-gallery-item__caption">My cption</figcaption>
      </figure>
    </li>
  </ul>
</figure>
<!-- /wp:gallery -->

As mentioned, this has to do with the way MUCD::replace() is written. What happens is the following:

  1. MUCD_Data::db_update_data() calls MUCD_Data::update() which eventually calls MUCD_Data::replace( 'the post content', 'https://example.test/wp-content/uploads', 'https://example.test/new-site/wp-content/uploads/sites/2 )
    • That replacement happens correctly
  2. MUCD_Data::db_update_data() calls MUCD_Data::update() which eventually calls MUCD_Data::replace( 'the post content', 'https://example.test', 'https://example.test/new-site' )
    • That replacement does not happen correctly
    • the reason is that MUCD::replace() notices that the $val already contains 'https://example.test/new-site' (because of the previous replacement) and so does not do the replacement
    • this particular problem can be fixed in MUCD::db_update_data() by changing the order of the strings in $string_to_replace, putting $from_blog_url => $to_blog_url first
    • that works since $to_blog_url will be shorter than $to_upload_url (unless a site has done something really weird with changing the location of their uploads folder), and therefore, it is much more likely that $to_upload_url will not already exist in the post_content
    • however, I haven't tested enough to know whether changing the order of the replacements causes other problems

Cannot start by error

Fatal error: Call to undefined function get_sites() in /home/reple/neo-sahara.com/public_html/wp/wp-content/plugins/multisite-clone-duplicator/lib/functions.php on line 180
WordPress 4.7.2

Minor: Doesn't work on WP 3.5 and 3.6

I'm forced to use a very old version of WordPress at one of my clients, and I noticed that the Clone Duplicator does not work on 3.6 because it uses wp_get_sites (introduced in 3.7).

Personally, I'd probably fix this by updating the wp.org "requires" tag to 3.7 :).

The plug-in stopped to clone and provides a new fresh installation instead

Hello,
Hope you're doing well :)

I'm using MultiSite Clone Duplicator for several months and it always worked perfectly. Next week (before the last update of the plug-in 2 days ago), I used, as usual, my dedicated "template"/sub-site to clone from to create a new sub-site on my network for one of my new pupil.
Instead of cloning the dedicated sub-site, the plug-in install now a new fresh Wordpress, like when you install WP for the first time.
Since the last cloning success, I just added a new plug-in "Corner Ad", not activated on the network, and nothing else...
Then, when I saw that there was a new update 2 days ago, I thought that it would fix this issue but no, the problem is still the same...

Thanks a lot for your help.

Best Regards,
Laurent O.
PS: Sorry for my english :)

Unable to Duplicate in Multi-Site

Whether duplicating an existing site or creating a "new" site, I get the following error:

"Missing or invalid site address"

Never had this problem before, now this is CONSTANT. Please help.

screen shot 2017-04-24 at 3 40 12 pm

SSL Issue

Whenever I clone a site, it strips out the https for the Media uploads and causes a mixed content issue, thus showing these sites as not secure. Using Divi and the theme builder for these sites as well.

Allow target site to use a domain name independent of subdomain

Allow target site to use a domain name independent of subdomain

Currently:

Primary site: domain.com
Child site: foo.domain.com
Duplicated site with slug bar: bar.domain.com

Using domain mapping, it is possible to reconfigure a child site into something like foo.com.

It would be useful to duplicate directly from foo.com into bar.com, and expect all the urls to come out correctly.

The filter mucd_string_to_replace allows overriding this effectively on a case by case basis, but it would be nice to include in the plugin UI as via a wp-cli option.

Additionaly, there are rumors that domain mapping will be a core feature in 4.4, mentioned in this support thread. In that case, this would be a natural addition to this plugin.

Thanks for the plugin and wp cli attention, much appreciated!

shortcode erroneously gets altered

After cloning a site using the Jupiter theme, a shortcode was altered (breaking it) from vc_wp_custommenu to vc_wp_3_custommenu, presumably because the database prefix was matched.

This is with the current latest version; 1.4.1

Any chance this can be fixed?

MSCD breaks core functionalities

MSCD forces check on admin referer, but doesn't check if $_POST is delegated for it. In this case i. e. delete blog functionality fails (check_admin_referer throws 403).

Delete blog has referer named 'confirm', but plugin checks for siteoptions (even though form is not for it). Forms should have hidden value which would allow to check if $_POST request is for plugin or not.

if ( ! empty( $_POST ) && check_admin_referer( 'siteoptions' ) )

upgrade to wordpress 4.9.4 support

Hello @pierre-dargham

I test it in wordpress 4.9.1, and it works well, but I found it does not support wordpress 4.9.4.

It will show a white page and no roles and user would be duplicated.

Would you please upgrade it?

Thanks

Alex

Problem with subsite clone

Hi team,

Recently, I duplicate a subsite in my multisite and have some troubles:

  1. After running duplicate button, it loads a couple of seconds and show up a blank page with nothing. I have to access All site to see the new site.

  2. I already tick "Keep users and roles from duplicated site" but it doesn't copy from the old site to new site.

crypto

Could you check this issue, please?

Error with log path validation (valid_unix_dir_path)

The regular express seems incorrect and does not support the points in the WP installation paths.

Function : valid_unix_dir_path()

var_dump($bool, $reg, $path);

int(0) 
string(27) "/^(\/([a-z0-9+$_-])+)*\/?$/" 
string(111) "/var/www/sites/preprod/www.mywebsite.com/current/wp-content/uploads/multisite-clone-duplicator-logs/"

IDs of cloned tables

this is as much to confirm my theory as anything else, but when a site is cloned, the post IDs (and related meta IDs, etc) will be identical to the source site, correct? (I'm looking to run a function after the site was cloned to map some post meta)

related: I don't see any actions that run after the cloning is complete. Is there something I don't see?

No option mucd_default_primary_tables_to_copy

Cloning a primary site works 'out of the box', there is no option to enter 'mucd_default_primary_tables_to_copy' as depicted in the documentation. If I check in the database there are 10 additional tables for the cloned site just like the other subsites.

Compatibilty with MultilingualPress ?

Using MultiSite Clone Duplicator 1.4.1 (Last Updated 1 year ago) I got problems with my WordPress 4.9.5 Multisite Installation and MultilingualPress 2.11.0 (Last Updated 4 months ago) Enable automatic redirection function (by browser language). A collegue found out that by the duplication the Front Pages of two multisite instances had the same ID what caused the problem in the MultilingualPress not redirecting as expected on the duplicated site. Manually creating a new Front Page (with new ID) solved the problem.
Not sure if this is caused by MultiSite Clone Duplicator or should be solved in MultilingualPress. As I see MultiSite Clone Duplicator was not updated since a year and other database/core/MS issues are reported I can not anymore trust this plugin and will deactivate it until this and other issues get solved.

Documentation mistake

Greetings,
The hooks listed in your readme/description are incorrect. The are in all caps, and the hooks actually used are all lowercase. Hooks are case sensitive, causing your documentation to be very misleading. Otherwise, great plugin so far.

Problem wi

Hello
i am using the iOS app with some multisites. one of the site is duplicated of an existing multisite with the wordpress-plugin multisite clone duplicator.

after adding the clone-site to the app, the app shows as blogname the original-site name in the list of websites. but the name of the clone-site is already changed to "clone".

after adding the original-site to the app, with the url of the original site, the app adds the clone-site as a second instance.

now one of the clone-sites in the website-list is shown as "original" and one as "clone". But the url of both is to "clone"

after tapping the clone site with the name "original" to edit some stuff, i see as blog name "original". after going back to switch another site the names in the list switches in a random way from "original" to "clone" or backward.

maybe its a problem of the app, i asked already in the iPhone forum of wordpress:
https://ios.forums.wordpress.org/topic/app-shows-the-wrong-multisite?replies=1

thank you

blank screen

Here are my data. Please help.

WordPress 4.8.1 Multisite subdirectory based, with WordPress MU Domain Mapping.

Increased timeout limit to 300:

[Fri Sep 15 08:38:54.240623 2017] [fcgid:warn] [pid 16120] (32)Broken pipe: [client 172.31.1.119:45758] mod_fcgid: ap_pass_brigade failed in handle_request_ipc function, referer: https://website.local/wp-admin/network/sites.php?page=multisite-clone-duplicator&id=1

Here are apache configs:

<VirtualHost 172.31.1.119:8443>

    ServerName website.local
    ServerAlias www.website.local website1.local website2.local website3.local www.website1.local www.website2.local www.website3.local
    ServerAdmin [email protected]
    DocumentRoot /home/admin/web/website.local/public_html
    ScriptAlias /cgi-bin/ /home/admin/web/website.local/cgi-bin/
    Alias /vstats/ /home/admin/web/website.local/stats/
    Alias /error/ /home/admin/web/website.local/document_errors/
    SuexecUserGroup admin admin
    CustomLog /var/log/apache2/domains/website.local.bytes bytes
    CustomLog /var/log/apache2/domains/website.local.log combined
    ErrorLog /var/log/apache2/domains/website.local.error.log
    <Directory /home/admin/web/website.local/public_html>
        SSLRequireSSL
        AllowOverride All
        Options +Includes -Indexes +ExecCGI
        php_admin_value open_basedir /home/admin/web/website.local/public_html:/home/admin/tmp
        php_admin_value upload_tmp_dir /home/admin/tmp
        php_admin_value session.save_path /home/admin/tmp
        <Files *.php>
          SetHandler fcgid-script
        </Files>
        FCGIWrapper /home/admin/web/website.local/cgi-bin/fcgi-starter .php
    </Directory>
    <Directory /home/admin/web/website.local/stats>
        AllowOverride All
    </Directory>
    php_admin_value open_basedir none
    SSLEngine on
    SSLVerifyClient none
    SSLCertificateFile /home/admin/conf/web/ssl.website.local.crt
    SSLCertificateKeyFile /home/admin/conf/web/ssl.website.local.key
    SSLCertificateChainFile /home/admin/conf/web/ssl.website.local.ca

    IncludeOptional /home/admin/conf/web/sapache2.website.local.conf*

</VirtualHost>

Config from /home/admin/conf/web/sapache2.website.local.conf.mod_fcgid

<IfModule mod_fcgid.c>
 FcgidMaxRequestLen 67108864
 FcgidOutputBufferSize 0
 MaxRequestLen 15728640
 FcgidMaxRequestsPerProcess 1000
 FcgidIOTimeout 300
</IfModule>

Here is my plugins list:


+---------------------------------------+----------------+--------+------------+
| name                                  | status         | update | version    |
+---------------------------------------+----------------+--------+------------+
| accelerated-mobile-pages              | inactive       | none   | 0.9.61     |
| accordion-shortcodes                  | active-network | none   | 2.3.3      |
| acf-content-analysis-for-yoast-seo    | active         | none   | 2.0.0      |
| github-mcguffin-acf-quick-edit-fields | active         | none   | 2.0.1      |
| codepress-admin-columns               | inactive       | none   | 3.0.3      |
| admin-menu-editor                     | inactive       | none   | 1.8        |
| github-nlemoine-acf-country           | active         | none   | 1.1.0      |
| advanced-custom-fields-pro            | active         | none   | 5.6.2      |
| advanced-wp-reset                     | active-network | none   | 1.0.1      |
| affiliate-links                       | inactive       | none   | 2.2        |
| ajax-search-pro                       | active         | none   | 4.11.4     |
| all-in-one-schemaorg-rich-snippets    | inactive       | none   | 1.5.1      |
| amazon-web-services                   | active-network | none   | 1.0.3      |
| amp                                   | inactive       | none   | 0.5.1      |
| autoptimize                           | inactive       | none   | 2.2.2      |
| better-search-replace                 | active-network | none   | 1.3        |
| browser-shots                         | active         | none   | 1.5.2      |
| cloudflare                            | active-network | none   | 3.3.1      |
| cloudflare-flexible-ssl               | active-network | none   | 1.2.2      |
| contact-form-7                        | inactive       | none   | 4.9        |
| custom-post-type-ui                   | inactive       | none   | 1.5.5      |
| disqus-comment-system                 | inactive       | none   | 2.87       |
| duplicate-post                        | active-network | none   | 3.2        |
| easy-affiliate-links                  | active         | none   | 2.4.1      |
| easy-social-share-buttons3            | active         | none   | 40.3       |
| enlighter                             | inactive       | none   | 3.5        |
| ewww-image-optimizer                  | active-network | none   | 3.6.1      |
| sem-external-links                    | active-network | none   | 6.8.1      |
| fresh-favicon                         | active         | none   | 1.1.2      |
| fresh-framework                       | active         | none   | 1.9.17     |
| glue-for-yoast-seo-amp                | inactive       | none   | 0.4.2      |
| gmail-smtp                            | active         | none   | 1.1.5      |
| google-analytics-dashboard-for-wp     | active-network | none   | 5.1.1.1    |
| hide_my_wp                            | inactive       | none   | 5.5.2      |
| invisible-recaptcha                   | inactive       | none   | 1.1        |
| jetpack                               | inactive       | none   | 5.3        |
| lc-googlemaps                         | active         | none   | 1.1.6      |
| lc-menu-pro                           | active         | none   | 1.0        |
| lc-templatesforcpt                    | active         | none   | 1.0        |
| loco-translate                        | active-network | none   | 2.0.15     |
| masterslider                          | inactive       | none   | 30.1.3     |
| megamenu                              | inactive       | none   | 2.3.8      |
| mega_main_menu                        | active         | none   | 20.1.4     |
| meta-box                              | active         | none   | 4.12.3     |
| multisite-clone-duplicator            | active-network | none   | 1.4.1      |
| multisite-post-duplicator             | active-network | none   | 1.7.2      |
| nginx-helper                          | active         | none   | 1.9.10     |
| ninja-forms                           | active         | none   | 3.2.1      |
| ninja-forms-conditionals              | active         | none   | 3.0.17     |
| ninja-forms-uploads                   | active         | none   | 3.0.15     |
| ninja-forms-style                     | active         | none   | 3.0.21     |
| ninja-forms-mailchimp-optins          | active         | none   | 3.0.0      |
| ninja-forms-multi-part                | active         | none   | 3.0.20     |
| ninja-forms-paypal-standard           | active         | none   | 3.0.0      |
| optinmonster                          | active         | none   | 1.2.2      |
| live-composer-page-builder            | active         | none   | 1.3.5      |
| wp-purge-pagespeed-button             | active-network | none   | 1.0.1      |
| password-protected                    | inactive       | none   | 2.0.3      |
| post-type-switcher                    | active-network | none   | 3.0.0      |
| query-monitor                         | inactive       | none   | 2.14.0     |
| regenerate-thumbnails                 | active-network | none   | 2.2.6      |
| related-posts-for-wp                  | active         | none   | 2.0.1      |
| responsive-lightbox                   | active         | none   | 1.7.2      |
| rock-the-slackbot                     | active-network | none   | 1.1.2      |
| schema                                | active         | none   | 1.6.9.2    |
| schema-default-image                  | active         | none   | 1.0        |
| schema-review                         | active         | none   | 1.1        |
| addthis                               | inactive       | none   | 6.1.1      |
| shortpixel-image-optimiser            | inactive       | none   | 4.6.0      |
| show-hidecollapse-expand              | active         | none   | 1.1        |
| simple-sitemap                        | active         | none   | 2.2        |
| revslider                             | inactive       | none   | 5.4.5.1    |
| table-of-contents-plus                | inactive       | none   | 1601       |
| tablepress                            | inactive       | none   | 1.8        |
| theme-check                           | active-network | none   | 20160523.1 |
| tinymce-advanced                      | active-network | none   | 4.6.3      |
| uptime-robot-monitor                  | inactive       | none   | 2.2.2      |
| very-simple-password                  | inactive       | none   | 1.7        |
| video-embed-thumbnail-generator       | active         | none   | 4.6.17     |
| widget-importer-exporter              | active-network | none   | 1.5.1      |
| widget-logic                          | inactive       | none   | 5.8.2      |
| wordpress-importer                    | active         | none   | 0.6.3      |
| wordpress-mu-domain-mapping           | active-network | none   | 0.5.5.1    |
| wp-mail-smtp                          | inactive       | none   | 0.10.1     |
| wpfw_menus_management                 | active         | none   | 1.5        |
| wp-security-audit-log                 | inactive       | none   | 2.6.7      |
| wp-video-lightbox                     | inactive       | none   | 1.8.4      |
| wordpress-seo-premium                 | active-network | none   | 5.4        |
+---------------------------------------+----------------+--------+------------+
PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.22-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imap
intl
json
ldap
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mys
[Fri Sep 15 12:14:47.592317 2017] [fcgid:warn] [pid 27144] (32)Broken pipe: [client 172.31.1.119:53682] mod_fcgid: ap_pass_brigade failed in handle_request_ipc function...

even after changing nginx proxy configs to:

send_timeout 3000;
proxy_connect_timeout 9000;
proxy_send_timeout 9000;
proxy_read_timeout 9000;

Something is really messed up.

Add language : zh_CN

See #14

If the language file works for the 1.x versions, add it (check it wasn't made for the 2.x version)

After duplication screen is empty

Hi

Not sure if this is a bug or not but after duplicating a site the content area is blank. There's no success message or redirect to back to /network/sites.php.

I've posted a screenshot of what I mean. I'm using version Version 1.4.1.

Thanks
Eric

after-duplication

error 502 or new cloned site or existing sites

I've installed the plugin and duplicate a 'simple site' and it seems to works.
But when I try to login in admin on the new site (or existing sites, no on network admin) I've 502 error!
I've deactiveted all plugins, but it's your plugin that cause the 502 error.
I've put this code
if (!is_main_site(get_current_blog_id())){ return; }
in multisite-clone-duplicator.php on line 20, and now the error disappears and I can login in admin area of each site!
Is this fix ok?

I've cloned a new site, after this fix, and it seems to be ok!
Let me know if it's a right fix.

(The wordpres MU is in docker with nginx)

User roles & capabilities are exponentially duplicated

When we are duplicating sites and I looked in usermeta table I advice data is duplicating exponentially for each duplication.

Example:

Duplicate Main site to site2:

y5dwg245el_2_capabilities

Duplicate Main site to site3:

y5dwg245el_3_capabilities
y5dwg245el_3_2_capabilities

Duplicate Main site to site4:

y5dwg245el_4_capabilities
y5dwg245el_4_3_capabilities
y5dwg245el_4_3_2_capabilities

If you need more info, let me know.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.