Convertir una instalación de WordPress multisitio en un solo sitio

15

Dada una red de sitios múltiples de WordPress, con un blog principal, y suponiendo que todo el contenido se haya trasladado a ese blog, ¿cómo se podría colapsar la red de nuevo en una instalación de WordPress estándar sin red y sin múltiples sitios?

    
pregunta Tom J Nowell 08.08.2011 - 15:14

5 respuestas

15

He seguido los pasos para extraer un sitio desde una instalación multisitio a una sola instancia ahora:

  1. Configure una copia limpia de WP pero no la instale
  2. Encuentra el ID del sitio
  3. Copie los archivos de blogs.dir / ID / files a la nueva carpeta de subidas de WP
  4. Copie el tema que usa el sitio y los complementos que usa en las carpetas apropiadas en la nueva carpeta de contenido wp
  5. Realice una copia de seguridad de la base de datos multisitio, pero solo las tablas del sitio de destino y las tablas de usuarios y usuarios que utilizan el entorno de trabajo MySQL o equivalente
  6. Restaure la copia de seguridad a una nueva base de datos y cambie los prefijos del nombre de la tabla para que todos sean iguales, por ejemplo. 'wp_SITEID_' a 'wp_'
  7. El uso de MySQL Workbench o el navegador de consultas ordena las tablas de usuarios y usuarios de este modo:
    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_%';
  8. Comience el proceso de instalación de WP para crear un wp-config.php , pero no haga clic en 'Ejecutar la instalación'
  9. Cree un archivo .htaccess predeterminado si los enlaces permanentes estaban en uso o simplemente visite la página de enlaces permanentes en wp-admin
  10. A continuación, deberá actualizar cualquier URL antigua en su base de datos. Lo ideal es utilizar una herramienta de búsqueda / reemplazo segura como la que se encuentra en wp-cli o su precursor de propósito general search/replace db interconectado / it . Reemplace específicamente blogs.dir/SITE_ID/files con uploads , y si está cambiando la URL de su sitio, busque oldsite.com y reemplace con newsite.com .

Un poco de esfuerzo y tienes que tener cuidado con las ediciones de la base de datos, pero eso es lo único que puedo ver para extraer un sitio único de un multisitio existente con todas sus configuraciones, etc. intactas.

EDIT:

Según lo señalado por @Jake, olvidé mencionar los pasos finales que debe seguir, por ejemplo. Búsqueda / reemplazo de URLs antiguas. He actualizado la lista en consecuencia.

    
respondido por el sanchothefat 03.01.2013 - 14:05
5

Es posible eliminar la instalación en varios sitios sin volver a instalar un blog nuevo. Siga los pasos.

  1. Cree una copia de seguridad, un volcado de la base de datos y una copia de seguridad del archivo de wp-content
  2. Establezca la constante WP_ALLOW_MULTISITE en su wp-config.php en FALSE
  3. Eliminar o comentar la configuración de MU en wp-config.php , como esto:

    /**
    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. Elimine la configuración de MU de .htaccess , como la fuente a continuación:

    # 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. Cree los enlaces permanentes nuevos, en el backend wp-admin/options-permalink.php y tal vez copie el resultado en .htaccess , si no es posible para WP, los derechos de escritura en este archivo.

  6. Elimine las entradas no útiles en la tabla users ; use la siguiente declaración sql en una herramienta, como phpMyAdmin o Adminer

    'ALTER TABLE 'wp_users' DROP 'spam', DROP 'deleted';'
    
  7. Se pueden quitar las siguientes tablas:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (solo, si existen)

    (cambie wp_ a su prefijo de base de datos)

  8. Ahora solo tiene las últimas tablas de otros blogs de la red. Si también lo usará con este contenido, luego expórtelo antes a través de WordPress export como XML e impórtelo ahora en la única instalación limpia.

respondido por el bueltge 03.01.2013 - 15:47
1

En realidad es posible y bastante fácil de hacer; Lo he hecho yo mismo varias veces.

Hay cosas que considerar.

  1. wp-config.php que define si se trata de un sitio múltiple o un sitio único
  2. .htaccess que contiene las reglas de reescritura para admitir múltiples sitios
  3. las tablas adicionales creadas para soportar múltiples sitios

Comentando la definición de múltiples sitios (?) en wp-config y actualizando sus enlaces permanentes, se revertirá el sitio al sitio único / modo predeterminado. Luego, todo lo que tienes que hacer es limpiar tu base de datos.

Si por alguna razón no puede acceder a su wp-admin para actualizar los enlaces permanentes, simplemente elimine su archivo .htaccess. WordPress lo volverá a crear para usted en modo de sitio único.

Haré todo lo posible para encontrar el enlace a los códigos / artículo de soporte y actualizaré la respuesta con él.

Aquí hay un enlace a un elemento en el foro de soporte enlace

    
respondido por el Steve 06.11.2012 - 19:06
0

Los procesos básicos aquí funcionan bien incluso en WP 3.5.1 Una aclaración: si nombró a su subsitio algo, tendrá que cambiar los enlaces en la base de datos para eliminar ese nombre. Si mi subsitio fue nombrado ... mysite.com/comics, luego de seguir los procedimientos anteriores, su WP buscará mysite.com/comics y obtendrá errores en los enlaces permanentes. Edite la tabla WP-OPTIONS buscando la extensión / comics y elimínela. Además, verifique que el directorio de Subidas apunte a la ubicación correcta; aún puede mostrar una entrada de blogs.dir y ahora debería apuntar a wp-content / uploads /

    
respondido por el user28829 12.03.2013 - 21:50
0

El punto muy importante que no debe pasarse por alto, y del que se habla menos, es que aún debe tener la línea:

define( 'WP_ALLOW_MULTISITE', ...

Pero se debe cambiar actualizado a

define( 'WP_ALLOW_MULTISITE', 0 );

    
respondido por el smhnaji 23.08.2014 - 00:22

Lea otras preguntas en las etiquetas