Avec un réseau WordPress multisite, avec un blog principal et en supposant que tout le contenu a été transféré sur ce blog, comment pourrait-on réduire le réseau en une installation standard non multisite WordPress?
J'ai déjà parcouru les étapes pour extraire un site d'une installation multisite vers une seule instance:
DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
wp-config.php
, mais ne cliquez pas sur 'Exécuter l'installation'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
.Un peu d'effort 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.
Il est possible de supprimer l’installation multisite sans réinstaller un nouveau blog. Suivez les étapes.
WP_ALLOW_MULTISITE
dans votre wp-config.php sur FALSE
Supprimez ou commentez les paramètres 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 );
*/
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
Créez les permaliens new dans le backend wp-admin/options-permalink.php
et copiez éventuellement le résultat dans .htaccess
, si ce n’est pas possible pour WP, les droits d’écriture sur ce fichier.
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`;`
Les tableaux suivants peuvent être supprimés:
(remplacez wp_
par le préfixe de votre base de données)
Maintenant, vous n'avez 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, puis importez-le maintenant.
En fait, c'est possible et assez facile à faire. Je l'ai fait moi-même plusieurs fois.
Il y a des choses à considérer.
En commentant la définition multisite (?) Dans wp-config et en mettant à jour vos permaliens, le site sera rétabli 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 permaliens, 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 les codes/article de support et mettre à jour la réponse avec.
Voici un lien vers un élément du forum de support http://wordpress.org/support/topic/revert-to-single-site
Le point très important à ne pas manquer, et dont on en parle moins, est que vous devriez toujours avoir la ligne:
define( 'WP_ALLOW_MULTISITE',
...
Mais il devrait être mis à jour pour
define( 'WP_ALLOW_MULTISITE', 0 );
Les processus de base ici fonctionnent bien même dans WP 3.5.1 Une précision: si vous avez nommé quelque chose à votre sous-site, 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 recevra des erreurs sur les permaliens. Editez la table WP-OPTIONS en recherchant l’extension/comics et supprimez-la. 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 indiquer wp-content/uploads /