Después de Mover un Sitio a Otro Dominio, Todas las Imágenes se Perdieron

4 sept 2014, 22:22:35
Vistas: 65K
Votos: 10

Me trasladé de www.domain1.com a www.domain2.com

Sin embargo, las rutas de las imágenes siguen apuntando a www.domain1.com/wp-content/uploads.... Así que cuando www.domain1.com dejó de funcionar, todas mis imágenes dejaron de mostrarse.

Actualicé la tabla wp_posts donde todos los archivos adjuntos ahora apuntan a www.domain2.com/wp-content/uploads..., pero las imágenes existen en www.domain2.com y aún no puedo ver ninguna imagen. ¿Está mal mi caché?

2
Comentarios

¿Se ha resuelto esta pregunta?

Ethan Rævan Ethan Rævan
29 ago 2016 16:54:26

Deberías usar el plugin wp-migrate-db para esto. Una vez que exportes e importes la base de datos, por favor guarda la configuración de enlaces permanentes una vez

Malay Solanki Malay Solanki
5 mar 2018 11:15:14
Todas las respuestas a la pregunta 10
1
11

Parece que necesitas cambiar las URLs de las imágenes antiguas. La forma más fácil y rápida de hacerlo es realizar una búsqueda y reemplazo en la base de datos MySQL.

Puedes usar PHPMyAdmin (normalmente proporcionado por tu proveedor de hosting) u otro software de edición de MySQL como Sequel Pro para realizar cambios en tu base de datos MySQL sin tocar el área de administración de WordPress. Esto significa que puedes hacer cambios a gran escala ejecutando consultas SQL en lugar de hacerlos uno por uno, lo cual es tedioso y consume mucho tiempo.

Recuerda hacer una copia de seguridad de tu base de datos primero. Para hacer esto en PHPMyAdmin, selecciona tu base de datos en la barra lateral izquierda, luego haz clic en "Exportar". El método "Simple" está bien, pero si quieres más control, el método "Personalizado" te ofrece muchas opciones.

Después de hacer tu copia de seguridad, haz clic en la pestaña SQL y pega lo siguiente en el área de texto:

UPDATE wp_options SET option_value = replace(option_value, 'oldurl', 'newurl') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'oldurl','newurl');

UPDATE wp_posts SET post_content = replace(post_content, 'oldurl', 'newurl');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'oldurl','newurl');

Y reemplaza "oldurl" con tu URL antigua y "newurl" con tu nueva URL, manteniendo el http:// pero eliminando las barras diagonales al final. Revísalo bien, y cuando estés satisfecho, haz clic en el botón Ir.

Navega hasta tu sitio y comprueba si tus imágenes están funcionando. Si no es así, generalmente es debido a un error tipográfico, que puedes solucionar restaurando la base de datos desde la copia de seguridad que hiciste al principio del proceso y volviendo a intentarlo.

Hay una guía ampliada sobre la migración de dominios en WordPress en este sitio, que también incluye un enlace a un script para generar la consulta SQL por ti.

4 sept 2014 23:48:20
Comentarios

Una respuesta debe ser más que solo un enlace. Esto está justo en el límite, pero asegúrate de revisar "¿Cómo escribo una buena respuesta?": "Se anima a incluir enlaces a recursos externos, pero por favor agrega contexto alrededor del enlace para que otros usuarios tengan una idea de qué se trata y por qué está ahí. Siempre cita la parte más relevante de un enlace importante, en caso de que el sitio de destino no esté disponible o desaparezca permanentemente."

mrwweb mrwweb
5 sept 2014 02:00:00
2

Si tu sitio es bastante pequeño, podrías...

  1. Iniciar sesión en phpMyAdmin.
  2. Exportar tu base de datos como un archivo SQL.
  3. Hacer una copia de tu archivo SQL de la base de datos para tener un respaldo de tu base de datos original, en caso de que cometas un error.
  4. Abrir tu archivo SQL de la base de datos en un editor de texto.
  5. Buscar y reemplazar domain1.com con domain2.com.
  6. Guardar tu archivo SQL de la base de datos.
  7. Iniciar sesión nuevamente en phpMyAdmin.
  8. Importar tu archivo SQL de la base de datos.

ACTUALIZACIÓN 18/03/2016

DESPUÉS de haber realizado los pasos anteriores, procede con el siguiente procedimiento:

Paso 1 - Crear una función para usar.

function mbe_migrate_widgets() {

}

Paso 2 - Especificar qué buscar y con qué reemplazar.

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

}

Paso 3 - Recuperar todos los widgets de WordPress.

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Obtener todos los Widgets
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

}

Paso 4 - Recorrer todos los widgets de WordPress y recuperar la información de cada widget.

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Obtener todos los Widgets
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

    if ( ! $widgets ) {
        return false;
    }

    $actions = array();

    foreach ( $widgets as $widget ) {

        // Recuperar los datos del Widget.
        $widget_data = get_option( $widget->option_name );

    }

    return $actions;

}

Paso 5 - Realizar la búsqueda y reemplazo en los datos del widget y actualizar los registros de la base de datos.

function mbe_migrate_widgets() {

    $old_domain = 'http://dev.';
    $new_domain = 'http://beta.';

    global $wpdb;

    // Obtener todos los Widgets
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

    if ( ! $widgets ) {
        return false;
    }

    $actions = array();

    foreach ( $widgets as $widget ) {

        // Recuperar los datos del Widget.
        $widget_data = get_option( $widget->option_name );

        // Actualizar los datos del Widget cambiando el dominio antiguo por el nuevo.
        $update = update_option(
            $widget->option_name,
            recursive_array_replace( $old_domain, $new_domain, $widget_data )
        );

        if ( $update ) {
            $actions['success'][] = $widget->option_id;
        } else {
            $actions['failed'][] = $widget->option_id;
        }

    }

    return $actions;

}

Paso 6 - Incluir función personalizada de reemplazo recursivo en arreglos.

// Reemplazo de Cadena Recursivo - recursive_array_replace(mixed, mixed, array);
function recursive_array_replace( $find, $replace, $array ) {

    if ( ! is_array( $array ) ) {
        return str_replace( $find, $replace, $array );
    }

    $newArray = array();

    foreach ( $array as $key => $value ) {
        $newArray[ $key ] = recursive_array_replace( $find, $replace, $value );
    }

    return $newArray;

}

Ahí lo tienes. Ejecuta esa función una vez y todos tus widgets deberían empezar a funcionar mágicamente de nuevo.

Nota: Depende de ti dónde coloques este código o cómo lo ejecutes. También reemplaza las variables $old_domain y $new_domain según corresponda.

Nota adicional: Ten en cuenta que este ejemplo solo afecta a los widgets. Si tienes otras partes de tu sitio web que contengan URLs en datos serializados, modifica tu consulta a la base de datos en consecuencia. (Me refiero a esta parte del código: SELECT option_id, option_name FROM $wpdb->options WHERE option_name LIKE '%widget_%' )

Publicaría un enlace a mi blog sobre este tema, pero no quiero parecer "spam". Esto es esencialmente un copiar/pegar de un artículo que escribí en mi sitio web el 18/03/2016. El contenido en esta respuesta podría quedar obsoleto y el contenido del artículo en mi sitio web podría ser más relevante en el futuro. Por favor, si estás interesado, revisa mi perfil para encontrar un enlace a mi sitio web.

Explicación útil sobre datos serializados: Anatomía de un valor serialize()'ado.

5 sept 2014 01:01:44
Comentarios

¡No hagas esto! ¡Algunas configuraciones se corrompen al hacer esto! Si almacenas un array en WordPress, se guarda con una sintaxis como esta: a:1:{i:0;s:6: "setting"}. Los números representan la longitud de la cadena (1 array, clave 0, cadena con longitud de 6), así que si cambias de mysite.com a mynewsite.com, la longitud no coincidirá, lo que corromperá el array.

Jeroen Jeroen
18 mar 2016 17:43:30

@Jeroen He actualizado mi respuesta con respecto a los datos serializados. Espero que esto ayude.

Michael Ecklund Michael Ecklund
19 mar 2016 05:05:51
0

A riesgo de responder la pregunta solo con un enlace, creo que los siguientes pasos en esta página (http://codex.wordpress.org/Moving_WordPress) son lo que estás buscando:

Cambiar tu nombre de dominio y URLs

Necesitas cambiar de forma segura todas las instancias de tu antiguo nombre de dominio por el nuevo en la base de datos. Puedes hacerlo usando una de las siguientes opciones:

  1. Realizar únicamente una búsqueda y reemplazo en la tabla wp_posts.

  2. Usar el Script de Búsqueda y Reemplazo para Bases de Datos de WordPress para cambiar de forma segura todas las instancias. (Si eres desarrollador, usa esta opción. Es un proceso de un solo paso en comparación con el procedimiento de 15 pasos que se describe más abajo)

  3. Opcionalmente, también puedes usar una herramienta en línea (en caso de que no quieras lidiar con subir scripts a tu servidor) Búsqueda y Reemplazo Serializado PHP en Línea para WordPress que permite reemplazar un dominio o URL antiguo por uno nuevo mientras corrige los datos serializados al mismo tiempo.

También hay mucha otra información útil sobre migración de WP en esa página.

6 sept 2014 00:10:02
0

Parece que ya podrías tener tu respuesta, pero te recomiendo encarecidamente que uses DBSR (db search replace) para reemplazar TODAS las ocurrencias de dominio1 por dominio2. Existen herramientas para eso. Esta es bastante limpia: https://github.com/interconnectit/Search-Replace-DB

El proceso completo está descrito. Tiene una buena interfaz de usuario.

De esta manera te asegurarás de que todo esté correcto en los registros de la base de datos.

29 jun 2016 00:29:58
0

Aunque digas que has actualizado los datos de wp_posts a www.domain2.com, todavía están los valores de home y siteurl en tu tabla wp_options que necesitan ser cambiados, entre otras cosas.

Para asegurarte de que todos tus datos se han actualizado al nuevo dominio, por favor sigue los siguientes pasos:

  1. Ve y descarga el script de Búsqueda y Reemplazo en Base de Datos de Interconnect IT aquí
  2. Descomprime el archivo y coloca la carpeta (vía FTP) donde esté instalado tu WordPress (la raíz) y renombra la carpeta a replace (captura de pantalla)
  3. Navega a la nueva carpeta que creaste en tu navegador (ej: http://www.domain2.com/replace) y verás la herramienta de búsqueda/reemplazo
  4. Debería ser bastante intuitivo hasta este punto: ingresa tu antigua URL en el campo search for… y la nueva URL en el campo replace with…

Puedes hacer clic en el botón dry run bajo actions para ver qué reemplazará antes de ejecutar el script. Una vez que hayas terminado, asegúrate de eliminar la carpeta /replace/.

29 ago 2016 17:00:39
0

método muy sencillo

Instala este plugin Velvet en el backend de tu WordPress.

Ahora ve a la configuración de Velvet e ingresa tu dominio antiguo y luego el nuevo dominio. Presiona el botón de actualizar y listo.

5 mar 2018 11:41:00
0

Utiliza WP Migrate DB para exportar datos basados en zip reemplazando tu URL.

Con este plugin no perderás widgets ni ningún dato serializado.

exportar base de datos WordPress

5 mar 2018 11:50:34
0

Puedes usar el plugin de WordPress: Go Live Update Urls

Es realmente fácil y rápido.

15 nov 2021 12:16:22
1
-1

Una vez dentro del cPanel, busca la categoría Bases de datos y haz clic en el icono de la herramienta phpMyAdmin. Ahora estás en la página principal de phpMyAdmin. Encuentra la base de datos recién añadida y haz clic en su nombre desde la barra lateral izquierda. Nuestra base de datos de ejemplo se llama testdb. Esto abrirá la base de datos y la pantalla se actualizará mostrando una lista de las tablas. Usando nuevamente la barra lateral, busca y haz clic en la tabla wp_posts. Dirígete a la parte superior de la pantalla y verás varias pestañas que recorren la página. Haz clic en la pestaña SQL. Ahora estás en una pantalla de editor MySQL. En el área de código, copia el siguiente fragmento de MySQL.

UPDATE wp_posts SET post_content=(REPLACE (post_content, 'dommain1.com','domain2.com'));

¿Podría funcionar?

29 ago 2016 16:34:37
Comentarios

¿En qué se diferencia esto de la otra respuesta? Hay más referencias a imágenes en la base de datos además del contenido de la publicación.

Howdy_McGee Howdy_McGee
29 ago 2016 16:58:40
0
-2

Hola, si estás trabajando con una base de datos, sigue estos pasos:

  1. Inicia sesión en phpMyAdmin.
  2. Exporta tu base de datos como un archivo SQL.
  3. Haz una copia de seguridad de tu archivo SQL para tener un respaldo de tu base de datos original, por si cometes algún error.
  4. Abre tu archivo SQL en un editor de texto.
  5. Busca y reemplaza domain1.com con domain2.com.
  6. Guarda tu archivo SQL modificado.
  7. Vuelve a iniciar sesión en phpMyAdmin.
  8. Importa tu archivo SQL modificado.
28 jul 2015 13:57:08