Je suis passé de www.domain1.com
à www.domain2.com
Cependant, les chemins de l'image pointent toujours sur www.domain1.com/wp-content/uploads...
. Ainsi, lorsque www.domain1.com
est tombé en panne, toutes mes images ne sont plus affichées.
J'ai mis à jour la table wp_posts
où toutes les pièces jointes désignent maintenant www.domain2.com/wp-content/uploads...
, mais les images existent dans www.domain2.com
et je ne vois toujours pas d'image. Est-ce que ma mise en cache est désactivée?
Il semble que vous deviez changer les URL des anciennes images. Le moyen le plus simple et le plus rapide consiste à rechercher et à remplacer la base de données MySQL.
Vous pouvez utiliser PHPMyAdmin (généralement fourni par votre hébergeur) ou un autre logiciel d'édition MySQL tel que Sequel Pro pour modifier votre base de données MySQL sans toucher à la zone d'administration de WordPress. Cela signifie que vous pouvez effectuer des modifications à grande échelle en exécutant des requêtes SQL au lieu de les traiter une par une, ce qui est fastidieux et prend du temps.
N'oubliez pas de faire d'abord une sauvegarde de votre base de données. Pour ce faire dans PHPMyAdmin, sélectionnez votre base de données dans la barre latérale à gauche, puis cliquez sur "Exporter". La méthode "Simple" convient, mais si vous souhaitez davantage de contrôle, la méthode "Personnalisée" vous offre de nombreuses options.
Après avoir effectué votre sauvegarde, cliquez sur l'onglet SQL et collez le texte suivant dans la zone de texte:
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');
Et remplacez "oldurl" par votre ancienne URL et "newurl" par votre nouvelle URL, en conservant http: // mais en supprimant les barres obliques. Vérifiez-le, puis lorsque vous en serez satisfait, cliquez sur le bouton Go.
Accédez à votre site et vérifiez si vos images fonctionnent. Sinon, c'est généralement à cause d'une faute de frappe, que vous pouvez corriger en restaurant la base de données à partir de la sauvegarde effectuée au début du processus et en essayant à nouveau.
Il existe un guide détaillé sur la migration de domaine WordPress sur ce site , qui contient également un lien vers un script permettant de générer la requête SQL à votre place.
Vous semblez avoir déjà votre réponse, mais je vous recommande fortement d'utiliser DBSR (db search replace) pour remplacer TOUTES les occurrences de domain1 par domain2. Il existe des outils pour cela. Celui-ci est assez propre: https://github.com/interconnectit/Search-Replace-DB
L'ensemble du processus est décrit. Il y a une bonne interface utilisateur.
De cette façon, vous serez sûr que tout va bien pour les enregistrements de base de données.
Au risque de répondre à la question avec seulement un lien, je pense que les étapes suivantes de cette page ( http://codex.wordpress.org/Moving_WordPress ) sont ce que vous recherchez:
Modification de votre nom de domaine et de vos URL
Vous devez modifier toutes les occurrences de votre ancien nom de domaine par votre nouveau nom de domaine dans la base de données en toute sécurité. Vous pouvez le faire en utilisant l’une des méthodes suivantes:
Effectuez uniquement une recherche et un remplacement sur la table wp_posts.
Utilisez le script Search and Replace for WordPress Databases pour modifier en toute sécurité toutes les instances. (Si vous êtes un développeur, utilisez cette option. Il s’agit d’un processus en une étape, contrairement à la procédure en 15 étapes ci-dessous)
Facultativement, vous pouvez également utiliser un outil en ligne (au cas où vous ne voudriez pas télécharger des scripts sur votre serveur) WordPress en ligne sérialisé PHP Rechercher et remplacer , ce qui permet de remplacer un ancien domaine. ou une URL avec une nouvelle adresse tout en corrigeant les données sérialisées en même temps.
Il y a également beaucoup d'autres informations utiles sur la migration WP sur cette page.
méthode très facile
Installez ce plugin Velvet dans votre backend wordpress.
Maintenant, allez dans le paramètre velvet et entrez votre ancien domaine et entrez le nouveau domaine. cliquez sur le bouton de mise à jour. Vous avez terminé
UtilisezWP Migrez la base de donnéespour exporter des données au format Zip en remplaçant votre URL.
en utilisant ce plugin, vous ne pouvez pas perdre de widget ou de données sérialisées.
Bien que vous disiez que vous avez mis à jour vos données wp_posts
avec www.domain2.com
, il reste toujours les variables home
et siteurl
dans votre table wp_options
qui doivent être modifiées, entre autres choses.
Pour vous assurer que toutes vos données ont été mises à jour dans votre nouveau domaine, procédez comme suit:
replace
( screenshot )http://www.domain2.com/replace
) et vous verrez l'outil de recherche/remplacementsearch for…
et la nouvelle URL dans le champreplace with…
Vous pouvez cliquer sur le bouton exécution à sec sous actions pour voir ce qu'il va remplacer avant d'exécuter le script. Une fois que vous avez terminé, veillez à supprimer le dossier /replace/
.
Si votre site est assez petit, vous pourriez ...
domain1.com
par domain2.com
.EDIT le 18/03/2016
APRÈS avoir suivi les étapes ci-dessus, procédez comme suit:
function mbe_migrate_widgets() {
}
function mbe_migrate_widgets() {
$old_domain = 'http://dev.';
$new_domain = 'http://beta.';
}
function mbe_migrate_widgets() {
$old_domain = 'http://dev.';
$new_domain = 'http://beta.';
global $wpdb;
// Get all Widgets
$widgets = $wpdb->get_results(
"
SELECT `option_id`, `option_name`
FROM $wpdb->options
WHERE `option_name`
LIKE '%widget_%'
"
);
}
function mbe_migrate_widgets() {
$old_domain = 'http://dev.';
$new_domain = 'http://beta.';
global $wpdb;
// Get all 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 ) {
// Retrieve the Widget data.
$widget_data = get_option( $widget->option_name );
}
return $actions;
}
function mbe_migrate_widgets() {
$old_domain = 'http://dev.';
$new_domain = 'http://beta.';
global $wpdb;
// Get all 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 ) {
// Retrieve the Widget data.
$widget_data = get_option( $widget->option_name );
// Update the Widget data changing old domain to new domain.
$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;
}
// Recursive String Replace - 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;
}
Voilà. Exécutez cette fonction une fois et tous vos widgets devraient à nouveau fonctionner comme par magie.
Note: C'est à vous de choisir où placer ce code ou comment vous l'exécutez. Veuillez également remplacer les variables $old_domain
et $new_domain
en conséquence.
Extra Remarque: Gardez également à l'esprit que cet exemple n'affecte que les widgets. Si d'autres parties de votre site Web contiennent des URL dans des données sérialisées, veuillez modifier votre requête de base de données en conséquence. (Je parle de cette partie du code: SELECT option_id, option_name FROM $wpdb->options WHERE option_name LIKE '%widget_%'
)
Je voudrais poster un lien vers mon blog sur ce sujet, mais je ne souhaite pas apparaître comme "spam". C'est essentiellement un copier/coller d'un article que j'ai écrit sur mon site web le 03/18/2016 . Le contenu de cette réponse risque de devenir obsolète et le contenu de l'article de mon site Web pourrait devenir plus pertinent à l'avenir. S'il vous plaît, si vous êtes intéressé, consultez mon profil pour un lien vers mon site.
Explication utile des données sérialisées: Anatomie d'une valeur sérialisée () .