Convertir une installation WordPress multisite en un seul site

15

Avec un réseau multisites WordPress, avec un blog principal et en supposant que tout le contenu ait été transféré sur ce blog, comment pourrait-on réduire le réseau en une installation standard non multisite WordPress?

    
posée Tom J Nowell 08.08.2011 - 15:14

5 réponses

15

Je suis maintenant en train d'extraire un site d'une installation multisite vers une instance unique:

  1. Configurez une copie vierge de WP mais ne l'installez pas
  2. Rechercher l'ID du site
  3. Copiez les fichiers de blogs.dir / ID / files dans le nouveau dossier de téléchargement WP
  4. .
  5. Copiez le thème utilisé par le site et tous les plug-ins qu'il utilise dans les dossiers appropriés du nouveau dossier wp-content
  6. Sauvegardez la base de données multisite mais uniquement les tables du site cible, ainsi que les tables utilisateurs et usermeta, à l'aide de MySQL Workbench ou d'un logiciel équivalent
  7. Restaurez la sauvegarde dans une nouvelle base de données et modifiez les préfixes de nom de table afin qu'ils soient tous identiques, par exemple. 'wp_SITEID_' à 'wp _'
  8. À l'aide de MySQL Workbench ou du navigateur de requêtes, rangez les utilisateurs et les tables usermeta comme suit:
    1. DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    2. DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    3. UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
    4. UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
  9. Commencez le processus d'installation de WP pour créer un wp-config.php mais ne cliquez pas sur "Exécuter l'installation"
  10. Créez un fichier .htaccess par défaut si des liens permanents étaient utilisés ou visitez simplement la page de liens permanents dans wp-admin
  11. Vous devrez ensuite mettre à jour les anciennes URL de votre base de données. Idéalement, utilisez un outil de recherche / remplacement sûr, tel que celui décrit dans wp-cli ou son précurseur à usage général search/replace db par interconnect / it . Remplacez spécifiquement blogs.dir/SITE_ID/files par uploads et si vous modifiez l'URL de votre site, recherchez oldsite.com et remplacez-le par newsite.com .

Beaucoup d'efforts et vous devez être prudent avec les modifications de la base de données, mais c'est le seul que je peux voir pour extraire un site unique d'un multisite existant avec tous ses paramètres, etc ... intact.

EDIT:

Comme @Jake l’a remarqué, j’ai oublié de mentionner les étapes finales que vous devrez peut-être prendre, par exemple. rechercher / remplacer d'anciennes URL. J'ai mis à jour la liste en conséquence.

    
réponse donnée sanchothefat 03.01.2013 - 14:05
5

Il est possible de supprimer l’installation multisite sans réinstaller un nouveau blog. Suivez les étapes.

  1. Créer une sauvegarde, une sauvegarde de la base de données et une sauvegarde de fichier de wp-content
  2. Définissez la constante WP_ALLOW_MULTISITE dans votre wp-config.php sur FALSE
  3. Supprimez ou commentez les paramètres de la MU dans wp-config.php , comme ceci:

    /**
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', false );
    $base = '/wordpress/';
    define( 'DOMAIN_CURRENT_SITE', 'localhost' );
    define( 'PATH_CURRENT_SITE', '/wordpress/' );
    define( 'SITE_ID_CURRENT_SITE', 1 );
    define( 'BLOG_ID_CURRENT_SITE', 1 );
    */
    
  4. Supprimez les paramètres de MU de .htaccess , comme pour la source ci-dessous:

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin        
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    # END WordPress
    
  5. Créez les permaliens new dans le backend wp-admin/options-permalink.php et copiez peut-être le résultat dans .htaccess , si ce n’est pas possible pour WP, les droits d’écriture sur ce fichier.

  6. Supprimer les entrées inutiles de la table users ; utilisez l'instruction sql suivante dans un outil, comme phpMyAdmin ou Adminer

    'ALTER TABLE 'wp_users' DROP 'spam', DROP 'deleted';'
    
  7. Les tables suivantes peuvent être supprimées:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (seulement s'il existe)

    (remplacez wp_ par le préfixe de votre base de données)

  8. Vous n'avez maintenant que les dernières tables des autres blogs du réseau. Si vous voulez également utiliser ce contenu, exportez-le avant via WordPress et exportez-le maintenant dans la nouvelle installation.

réponse donnée bueltge 03.01.2013 - 15:47
1

En fait, c’est possible et assez facile à faire; Je l'ai fait moi-même plusieurs fois.

Il y a des éléments à prendre en compte.

  1. wp-config.php qui définit si plusieurs sites ou un seul site
  2. .htaccess qui contient les règles de réécriture pour prendre en charge plusieurs sites
  3. les tables supplémentaires créées pour prendre en charge plusieurs sites

Commenter la définition multisite (?) dans wp-config et la mise à jour de vos liens permanents rétablira le site en mode site unique / par défaut. Ensuite, tout ce que vous avez à faire est de nettoyer votre base de données.

Si pour une raison quelconque vous ne pouvez pas accéder à votre wp-admin pour mettre à jour les liens permanents, supprimez simplement votre fichier .htaccess. WordPress le recréera pour vous en mode site unique.

Je ferai de mon mieux pour trouver le lien vers l'article sur les codes / le support technique et pour mettre à jour la réponse avec.

Voici un lien vers un élément du forum d'assistance enlace

.     
réponse donnée Steve 06.11.2012 - 19:06
0

Les processus de base ici fonctionnent bien, même dans WP 3.5.1. Une précision: si vous avez nommé votre sous-site quelque chose, vous devrez modifier les liens dans la base de données pour supprimer ce nom. Si mon sous-site s'appelle ... mysite.com/comics, après avoir suivi les procédures ci-dessus, votre WP recherchera mysite.com/comics et obtiendra des erreurs sur les permaliens. Editez le tableau WP-OPTIONS en recherchant l’extension / comics et supprimez-le. Vérifiez également que le répertoire Uploads pointe vers le bon emplacement - il peut toujours afficher une entrée blogs.dir et doit maintenant désigner wp-content / uploads /

.     
réponse donnée user28829 12.03.2013 - 21:50
0

Le point très important à ne pas manquer, et dont on en parle moins, est que vous devriez toujours avoir la ligne suivante:

define( 'WP_ALLOW_MULTISITE', ...

Mais il devrait être modifié et mis à jour en

define( 'WP_ALLOW_MULTISITE', 0 );

    
réponse donnée smhnaji 23.08.2014 - 00:22

Lire d'autres questions sur les étiquettes