Wie ändere ich eine WordPress-Netzwerk-Domain?

Ich habe kürzlich mein WordPress-Netzwerk in eine neue Domain verschoben und dachte, ich hätte jeden Verweis auf diesen Domino aktualisiert, aber ich lag falsch. Ich suchte hoch und niedrig nach dem Answey, aber leider konnte ich es nirgendwo finden, also dachte ich, ich würde diese Frage / Antwort schreiben.

In meinem Scanario ist die Home-Site im Netzwerk eine einfache Seite, auf der alle anderen derzeit aktiven Sites aufgeführt sind. Die Netzwerk-Site- network_site_url({blog path}) jedoch einen Link zur Site in der alten Domain zurück.

network_site_url() verwendet get_current_site() , um ein Objekt zurückzugeben, das sich auf die aktuelle Site bezieht, und dieses Objekt hat die domain falsch aufgelistet.

 function get_current_site() { global $current_site; return $current_site; } 

Trotz meiner Bemühungen konnte ich nicht herausfinden, wo die $current_site global deklariert wurde.

Solutions Collecting From Web of "Wie ändere ich eine WordPress-Netzwerk-Domain?"

Die database

Zunächst sollten Sie alle Verweise auf Ihre alte Domäne in der database aktualisieren. Die folgende SQL wird dafür sorgen, aber zuerst diese Notizen lesen –

  • In diesem SQL wird davon wp_ dass Sie das Standard-Tabellenpräfix wp_ . Ändern Sie dies einfach in das von Ihnen gewählte Tabellenpräfix, wenn Sie es geändert haben.
  • Ersetzen Sie database_name durch den Namen der database, die von WordPress verwendet wird.
  • Ersetzen Sie www.old-domain.com durch den Namen der Domäne, von der Sie sich entfernen .
  • Ersetzen Sie www.new-domain.com durch den Namen der Domain, zu der Sie www.new-domain.com .
  • Obwohl es unwahrscheinlich ist, gibt es möglicherweise andere Verweise auf die alte Domäne (z. B. in wp_postmeta ). Zur Überprüfung PHPMyAdmin Sie in PHPMyAdmin die database auswählen, auf Suchen klicken und nach Referenzen auf %www.old-domain.com% in allen Tabellen suchen und diese dann bei Bedarf manuell aktualisieren.

Wichtig : Im folgenden Beispiel werden nur Verweise auf die alte Domäne für die Hauptwebsite und die erste untergeordnete Website aktualisiert. Wenn Sie mehr Sites haben, müssen Sie den Code für die UPDATE wp_*_options... und UPDATE wp_*_posts replizieren, wobei * die ID der Site ist.

 USE `database_name`; UPDATE `wp_options` AS `o1` SET `o1`.`option_value` = REPLACE(`o1`.`option_value`, 'www.old-domain.com', 'www.new-domain.com') WHERE `o1`.`option_name` IN ( 'siteurl', 'home' ); UPDATE `wp_options` AS `o2` SET `o2`.`option_value` = REPLACE(`o2`.`option_value`, 'www.old-domain.com', 'www.new-domain.com') WHERE `o2`.`option_name` IN ( 'siteurl', 'home' ); UPDATE `wp_posts` AS `p1` SET `p1`.`guid` = REPLACE(`p1`.`guid`, 'www.old-domain.com', 'www.new-domain.com'); UPDATE `wp_2_posts` AS `p2` SET `p2`.`guid` = REPLACE(`p2`.`guid`, 'www.old-domain.com', 'www.new-domain.com'); UPDATE `wp_blogs` AS `b` SET `b`.`domain` = REPLACE(`b`.`domain`, 'www.old-domain.com', 'www.new-domain.com'); UPDATE `wp_site` AS `s` SET `s`.`domain` = REPLACE(`s`.`domain`, 'www.old-domain.com', 'www.new-domain.com'); UPDATE `wp_sitemeta` AS `sm` SET `sm`.`meta_value` = REPLACE(`sm`.`meta_value`, 'www.old-domain.com', 'www.new-domain.com'); UPDATE `wp_usermeta` AS `um` SET `um`.`meta_value` = REPLACE(`um`.`meta_value`, 'www.old-domain.com', 'www.new-domain.com'); 

Das wichtige bisschen, das ich vermisst habe

In einer Netzwerkinstallation wird eine DOMAIN_CURRENT_SITE Konstante in wp-config.php . Öffnen Sie einfach diese Datei und aktualisieren Sie den Wert dieser Konstante in Ihrer neuen Domain, und Sie sollten gut sein.


Eine weitere Überlegung

In einigen Fällen können WP_HOME und WP_SITEURL Konstanten in wp-config.php , und diese überschreiben natürlich alle Einträge in der database. Ich würde vorschlagen, die Datei für diese Fälle zu suchen, nur für den Fall, und wenn sie vorhanden sind, würde ich empfehlen, sie zu entfernen (oder zumindest zu kommentieren), da es viel besser ist, die DB-Einträge zu verwenden.

 define('WP_HOME', 'http://www.old-domain.com'); define('WP_SITEURL', 'http://www.old-domain.com');