După Mutarea unui Site pe Alt Domeniu, Toate Imaginile sunt Pierdute

4 sept. 2014, 22:22:35
Vizualizări: 65K
Voturi: 10

Am mutat site-ul de pe www.domain1.com pe www.domain2.com

Cu toate acestea, căile către imagini încă indică spre www.domain1.com/wp-content/uploads.... Astfel, când www.domain1.com a căzut, toate imaginile mele nu mai sunt afișate.

Am actualizat tabelul wp_posts unde toate atașamentele indică acum spre www.domain2.com/wp-content/uploads..., dar imaginile există în www.domain2.com și tot nu pot vedea nicio imagine. Este cache-ul meu dezactivat?

2
Comentarii

A fost rezolvată această întrebare?

Ethan Rævan Ethan Rævan
29 aug. 2016 16:54:26

Ar trebui să folosești pluginul wp-migrate-db pentru asta. După ce exportezi și imporți baza de date, salvează setările de permalinkuri o dată.

Malay Solanki Malay Solanki
5 mar. 2018 11:15:14
Toate răspunsurile la întrebare 10
1
11

Se pare că trebuie să schimbați URL-urile pentru imaginile vechi. Cea mai ușoară și rapidă metodă de a face acest lucru este să efectuați o căutare și înlocuire în baza de date MySQL.

Puteți utiliza PHPMyAdmin (de obicei oferit de furnizorul de hosting) sau alte programe de editare MySQL, cum ar fi Sequel Pro, pentru a face modificări în baza de date MySQL fără a atinge zona de administrare WordPress. Astfel, puteți efectua modificări la scară largă prin rularea unor interogări SQL, în loc să le faceți una câte una, ceea ce ar fi plictisitor și consumator de timp.

Nu uitați să faceți mai întâi o copie de rezervă a bazei de date. Pentru a face acest lucru în PHPMyAdmin, selectați baza de date din bara laterală din stânga, apoi faceți clic pe „Export”. Metoda „Simplu” este suficientă, dar dacă doriți mai mult control, metoda „Personalizat” vă oferă mai multe opțiuni.

După ce ați făcut copia de rezervă, faceți clic pe fila SQL și lipiți următoarele în zona de text:

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');

Și înlocuiți „oldurl” cu vechiul URL și „newurl” cu noul URL, păstrând „http://” dar eliminând slash-ul de la final. Verificați dublu, iar când sunteți sigur, faceți clic pe butonul „Execută”.

Navigați pe site-ul dvs. și verificați dacă imaginile funcționează. Dacă nu, de obicei este din cauza unei greșeli de scriere, pe care o puteți remedia prin restaurarea bazei de date din copia de rezervă făcută la începutul procesului și încercând din nou.

Există un ghid detaliat pentru migrarea domeniului WordPress pe acest site, care oferă și un link către un script pentru generarea interogării SQL pentru dvs.

4 sept. 2014 23:48:20
Comentarii

Un răspuns ar trebui să fie mai mult decât doar un link. Acesta este chiar la limita, dar asigură-te că revizuiți "Cum scriu un răspuns bun?": "Linkurile către resurse externe sunt încurajate, dar te rugăm să adaugi context în jurul linkului, astfel încât colegii tăi utilizatori să aibă o idee despre ce este și de ce este acolo. Întotdeauna citează partea cea mai relevantă a unui link important, în cazul în care site-ul țintă este inaccesibil sau devine permanent indisponibil."

mrwweb mrwweb
5 sept. 2014 02:00:00
2

Dacă site-ul tău este relativ mic, ai putea...

  1. Conectează-te la phpMyAdmin.
  2. Exportă baza de date ca fișier SQL.
  3. Fă o copie a fișierului SQL al bazei de date, pentru a avea o copie de rezervă a bazei de date originale, în caz că greșești.
  4. Deschide fișierul SQL al bazei de date într-un editor de text.
  5. Caută și înlocuiește domain1.com cu domain2.com.
  6. Salvează fișierul SQL al bazei de date.
  7. Conectează-te din nou la phpMyAdmin.
  8. Importă fișierul SQL al bazei de date.

EDITARE 18.03.2016

DUPĂ ce ai efectuat pașii de mai sus, continuă cu următoarea procedură:

Pasul 1 – Creează o funcție pentru utilizare.

function mbe_migrate_widgets() {

}

Pasul 2 – Specifică ce să cauți și cu ce să înlocuiești.

function mbe_migrate_widgets() {

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

}

Pasul 3 – Preia toate widget-urile WordPress.

function mbe_migrate_widgets() {

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

    global $wpdb;

    // Preia toate Widget-urile
    $widgets = $wpdb->get_results(
        "
        SELECT `option_id`, `option_name`
        FROM $wpdb->options
        WHERE `option_name`
        LIKE '%widget_%'
        "
    );

}

Pasul 4 – Parcurge toate widget-urile WordPress și preia informațiile pentru fiecare widget.

function mbe_migrate_widgets() {

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

    global $wpdb;

    // Preia toate Widget-urile
    $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 ) {

        // Preia datele Widget-ului.
        $widget_data = get_option( $widget->option_name );

    }

    return $actions;

}

Pasul 5 – Efectuează căutarea și înlocuirea în datele widget-ului și actualizează înregistrările din baza de date.

function mbe_migrate_widgets() {

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

    global $wpdb;

    // Preia toate Widget-urile
    $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 ) {

        // Preia datele Widget-ului.
        $widget_data = get_option( $widget->option_name );

        // Actualizează datele Widget-ului, înlocuind domeniul vechi cu cel nou.
        $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;

}

Pasul 6 – Include funcția personalizată de înlocuire recursivă a array-ului.

// Înlocuire recursivă a șirului - 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;

}

Și gata. Rulează acea funcție o dată și toate widget-urile tale ar trebui să înceapă să funcționeze din nou ca prin magie.

Notă: Depinde de tine unde plasezi acest cod sau cum îl execuți. Te rog să înlocuiești și variabilele $old_domain și $new_domain în consecință.

Notă suplimentară: Te rog să ții cont că acest exemplu afectează doar widget-urile. Dacă ai alte părți ale site-ului care conțin URL-uri în date serializate, te rog să modifici interogarea bazei de date în consecință. (Vorbesc despre această porțiune a codului: SELECT option_id, option_name FROM $wpdb->options WHERE option_name LIKE '%widget_%')

Aș posta un link către blogul meu despre acest subiect, dar nu doresc să par "spamator". Acesta este în esență un copy/paste dintr-un articol pe care l-am scris pe site-ul meu în data de 18.03.2016. Conținutul din acest răspuns ar putea deveni învechit, iar conținutul din articolul de pe site-ul meu ar putea deveni mai relevant în viitor. Dacă ești interesat, te rog să verifici profilul meu pentru un link către site-ul meu.

Explicație utilă despre datele serializate: Anatomia unei valori serialize().

5 sept. 2014 01:01:44
Comentarii

Nu face asta! Unele setări pot fi corupte dacă faci asta! Dacă stochezi un array în WordPress, acesta va fi stocat într-o sintaxă de genul acesta: a:1:{i:0;s:6: "setting"}. Numerele reprezintă lungimea șirului (1 array, cheia 0, șir cu lungimea de 6), deci dacă schimbi de la mysite.com la mynewsite.com, lungimea nu se va potrivi, făcând array-ul corupt.

Jeroen Jeroen
18 mar. 2016 17:43:30

@Jeroen Am actualizat răspunsul meu în legătură cu datele serializate. Sper că acest lucru te ajută.

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

Cu riscul de a răspunde la întrebare doar cu un link, cred că următorii pași de pe această pagină (http://codex.wordpress.org/Moving_WordPress) sunt ceea ce cauți:

Schimbarea numelui de domeniu și a URL-urilor

Trebuie să schimbi toate aparițiile vechiului nume de domeniu cu noul nume de domeniu în baza de date în mod sigur. Poți face asta folosind una dintre următoarele metode:

  1. Efectuează doar o căutare și înlocuire în tabelul wp_posts.

  2. Folosește Scriptul de Căutare și Înlocuire pentru Baze de Date WordPress pentru a schimba în siguranță toate aparițiile. (Dacă ești dezvoltator, folosește această opțiune. Este un proces într-un singur pas, spre deosebire de procedura în 15 pași de mai jos)

  3. Opțional, poți folosi și un tool online (în caz că nu vrei să te deranjezi cu încărcarea de scripturi pe server) Online WordPress Serialized PHP Search and Replace care permite înlocuirea unui vechi domeniu sau URL cu unul nou, reparând în același timp datele serializate.

Există și multe alte informații utile despre migrarea WordPress pe acea pagină.

6 sept. 2014 00:10:02
0

Se pare că deja ai răspunsul, dar îți recomand cu tărie să folosești DBSR (db search replace) pentru a înlocui TOATE aparițiile domain1 cu domain2. Există unelte pentru asta. Aceasta este destul de curată: https://github.com/interconnectit/Search-Replace-DB

Întregul proces este descris. Are o interfață bună.

Astfel vei fi sigur că totul este în regulă în ceea ce privește înregistrările din baza de date.

29 iun. 2016 00:29:58
0

Deși spui că ai actualizat datele din wp_posts la www.domain2.com, încă mai există valorile home și siteurl în tabelul wp_options care trebuie schimbate, printre altele.

Pentru a te asigura că toate datele au fost actualizate la noul domeniu, te rugăm să urmezi următorii pași:

  1. Accesează și descarcă Scriptul de Căutare și Înlocuire în Baza de Date de la Interconnect IT aici
  2. Dezarhivează fișierul și plasează folderul (prin FTP) acolo unde este instalat WordPress (în rădăcină) și redenumește folderul în replace (captură de ecran)
  3. Navighează în browser la noul folder creat (ex: http://www.domain2.com/replace) și vei vedea instrumentul de căutare/înlocuire
  4. Până în acest punct ar trebui să fie destul de intuitiv: introdu vechiul URL în câmpul search for… și noul URL în câmpul replace with…

Poți apăsa butonul dry run (testare) de sub actions pentru a vedea ce va fi înlocuit înainte de a executa scriptul. După ce ai terminat, asigură-te că ștergi folderul /replace/.

29 aug. 2016 17:00:39
0

metodă foarte ușoară

Instalează acest plugin Velvet în panoul de administrare WordPress.

Acum mergi la setările Velvet și introdu vechiul domeniu și noul domeniu. Apasă pe butonul de actualizare. Ai terminat.

5 mar. 2018 11:41:00
0

Folosește WP Migrate DB pentru a exporta datele într-un fișier zip cu înlocuirea URL-ului tău.

Folosind acest plugin, nu vei pierde niciun widget sau date serializate.

Export de date în WP Migrate DB

5 mar. 2018 11:50:34
0

Puteți folosi plugin-ul WordPress: Go Live Update Urls

Este foarte ușor și rapid.

15 nov. 2021 12:16:22
1
-1

După ce ați intrat în cPanel, găsiți categoria Baze de date și faceți clic pe pictograma instrumentului phpMyAdmin. Acum vă aflați pe pagina principală a phpMyAdmin. Găsiți baza de date nou adăugată și faceți clic pe numele acesteia din bara laterală din stânga. În exemplul nostru, baza de date se numește testdb.

Aceasta va deschide baza de date și ecranul se va reîmprospăta cu o listă a tabelelor. Folosind din nou bara laterală, găsiți și faceți clic pe tabelul wp-posts.

Priviți în partea de sus a ecranului și veți vedea mai multe file care traversează pagina. Faceți clic pe fila SQL.

Acum vă aflați pe un ecran de editare MySQL. În zona de cod, copiați următorul fragment de MySQL:

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

Va funcționa?

29 aug. 2016 16:34:37
Comentarii

Cum diferă acest răspuns față de celălalt răspuns? Există mai multe referințe la imagini în baza de date decât doar conținutul postării.

Howdy_McGee Howdy_McGee
29 aug. 2016 16:58:40
0
-2

Bună! Dacă ești familiarizat cu bazele de date, folosește acești pași.

  1. Autentifică-te în phpMyAdmin.
  2. Exportă baza ta de date ca fișier SQL.
  3. Fă o copie a fișierului SQL al bazei de date, astfel încât să ai o copie de rezervă a bazei de date originale, în caz că greșești.
  4. Deschide fișierul SQL al bazei de date într-un editor de text.
  5. Găsește și înlocuiește domain1.com cu domain2.com.
  6. Salvează fișierul SQL al bazei de date.
  7. Autentifică-te din nou în phpMyAdmin.
  8. Importă fișierul SQL al bazei de date.
28 iul. 2015 13:57:08