Wordpress veritabanındaki etki alanı adı nasıl değiştirilir?


12

Bir geliştirme ortamında yüklü bir Wordpress veritabanı var ... bu nedenle, sitenin kendisine yapılan tüm referanslar sabit bir IP adresine sahiptir (192.168.16.2). Şimdi, bu veritabanını bir barındırmadaki yeni bir Wordpress kurulumuna geçirmem gerekiyor. Sorun, SQL dökümü IP adresine referanslar bir sürü içerir ve ben ile değiştirmek zorunda: alan_adim.com.

Bunu sedveya komut satırından değiştirmek için başka bir komut kullanabilirsiniz, sorun JSON kullanan yapılandırma verileri çok olmasıdır. Ne olmuş yani? Bildiğiniz gibi, JSON dizileri aşağıdaki gibi şeyleri kullanır: s:4:bir öğenin kaç karakterine sahip olduğunu bilmek ve böylece IP'yi sadece alan adı ile değiştirirsem, yapılandırma dosyaları bozulur.

Birkaç yıl önce Windows için bir veritabanındaki değerleri değiştirmeye izin veren ve JSON dizileriyle ilgilenen bir uygulama kullandım. Ne yazık ki, uygulamanın adını unuttum ... yani soru: istediğimi yapmama izin veren herhangi bir uygulama biliyor musunuz?


1
Bu tam bir cevap değildir, ancak bir tane aramanıza yardımcı olabilir: baktığınız veriler JSON formatlı değildir. JSON (normalde) değer türlerini ve uzunluklarını böyle depolamaz. Baktığınız şey SERIALIZED veridir. "Mysql serileştirilmiş mysql" için bir google araması bu sayfayı verir, bu da yardımcı olabilir: davidcoveney.com/…
MathSmath

Hey, yorumunuz benim için yararlı olan tek cevap ... doğru olarak işaretlemek için cevaba taşıyın. Teşekkürler!
Cristian

Yardımcı oldu sevindim! Cevap olarak gönderdim.
MathSmath

Yanıtlar:


7

Baktığınız veriler JSON biçiminde değil. JSON (normalde) değer türlerini ve uzunluklarını böyle depolamaz. Baktığınız şey SERIALIZED veridir. "Mysql serileştirilmiş değiştir" için yapılan bir Google araması bu sayfayı verir ve bu yardımcı olabilir: http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/


Teşekkür ederim ... 2 yıl boyunca PHP geliştiricisi olarak çalıştım. Serileştirilmiş bir şey ile JSON dizesi arasındaki farkı unuttuğuma inanamıyorum.
Cristian

8

Kodeks'in iyi bir kılavuzu var - Site URL'sini değiştirme .

Temelde orada URL önemli ya da çok değil birkaç yer vardır (bazı eksik olabilir):

  • homeve siteurlWP'nin sitenin nerede olduğunu düşündüğünü kontrol eden seçenekler;
  • sonrası GUID, bunlar bağlantılar gibi görünüyor ama gerçekten değil - sadece tanımlayıcılar. Alakasız olduklarından kesinlikle emin değilim, ancak test yığınında çok fazla URL değişikliği yaptım ve bunları güncellemek için hiç uğraşmadım.
  • post organlardaki bağlantılar;
  • muhtemelen eklenti ayarlarında bağlantılar.

Birkaç adım var. Web mv olddir.com newdir.comsunucunuzu yeniden yapılandırmanız gerektiğinde, web sunucusunu yeniden başlatın. Burada kodeks talimatlarını izleyin ve ardından yönetici olarak oturum açabilmeniz gerekir. Bu işe başlamak gerekir :-)
PJ Brunet

6

Rarst'ın yukarıda söylediği gibi, veritabanında sadece İHTİYAÇLARIN değişmesi gereken iki ayar vardır. Veritabanını içe aktardıktan sonra PHPMyAdmin'de oturum açtım ve doğrudan veritabanını düzenledim.

Veri beslemelerini içe aktarmak için PC'imde her zaman bir geliştirme sunucusu kullanıyorum ve http: // localhost / testsite / post-name / satırları boyunca Mesajlara eklenmiş URL'ye sahipler ve asla bir soruna neden olmamıştı.

Bir SQL araması kullanırdım ve önemli olmadığını anlayana kadar değiştirirdim. Birkaç siteyi bir alan adından diğerine taşıdım ve içerikte mutlak URL'ler bulunduğumda SQL arama ve değiştirme seçeneğini kullanacağım.

update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');

David


Diğer yapılandırma değişkenlerinin yanı sıra, etki alanı adını serileştirilmiş bir dizenin içine de kaydeden ContactForm7 gibi bazı eklentiler vardır. Serileştirilmiş bir dizeyi değiştirdiğinizde uzunluğu değiştiğinde bozulabilir, bu yüzden bazen, sadece iki ayardan daha fazla şey değişebilir.
Cristian


3

Bu değerleri 'de sabitlerle ayarlayabilirsiniz wp-config.php. Bundan sonra, istediğiniz zaman veritabanındaki girişleri eklenti Yöneticisi aracılığıyla değiştirebilirsiniz. Bunu içine yazın wp-config.phpve DB'deki değerler ilgili değildir:

define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');


2

Basit SQL sorguları - karmaşık REPLACE öğelerine gerek yoktur:

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'siteurl';

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'home';

PHPMyAdmin olanları veya veritabanına erişmek için başka bir yol kullanın.


2

Yeni veritabanının seçili olduğundan emin olun, sonra bazı sql güncellemelerini ve değiştirme komutlarını tablolarda özellikle wp_options, wp_posts, wp_postmeta çalıştırın.

Kodu aşağıdaki gibi kullanın ve eski ve yeni URL'lerinizi değiştirin, sondaki eğik çizgiler olmadan değiştirin. Ayrıca gerekirse tablo öneki değerlerini (varsa wp_) değiştirin

UPDATE wp_options SET option_value = replace(option_value, 'http_www.oldurl', 'http_www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';    
UPDATE wp_posts SET guid = replace(guid, 'http_www.oldurl','http_www.newurl');    
UPDATE wp_posts SET post_content = replace(post_content, 'http_www.oldurl', 'http_www.newurl');    
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http_www.oldurl','http_www.newurl');

1

Bu çok eski bir soru, ama başka bir şey ararken karşılaştığım için, gelecekteki referans için bunu ekleyeceğimi düşündüm.

Bunu yapmanın en basit, en eksiksiz yolunun searchreplacedb2.php kullanmak olduğunu düşünüyorum. Burada bulunabilir: http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ve kullanımıyla ilgili bir açıklama.

Wordpress sitelerimde geliştiriciden canlı ortamlara geçişle kesinlikle çok zaman kazandım.

İşiniz bittikten sonra bir genel sunucudan sildiğinizden emin olun!


0

WordPress sitenizi geliştirme ortamından yeni bir sunucuya veya üretim sunucusuna taşımak istediğinizi görüyorum.

Son zamanlarda sitemi üretim sunucusuna taşıdım ve aynı durumla karşı karşıyayım. WordPress site URL'sini Veritabanında sakladığından site URL'sini güncellemem gerekiyor.

URL gibi doğrudan veritabanından kolayca değiştirebilirsiniz kullanarak iyi MySQL sorgusu buldum.

SET @search := "http://olddomain.com";
SET @replace := "http://newdomain.com";

UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "siteurl";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "home";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "product_list_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "shopping_cart_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "checkout_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "widget_text";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerImageLogo";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "cunjo_plugin_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "wpsr_socialbt_data";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "issuem";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "_transient_dgxdonate_t70pbg1htu_1396322372";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "dgx_donate_log";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerBackgroundImage";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "transact_url";
UPDATE `wp_postmeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_usermeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_posts` SET `guid`=REPLACE(guid, @search, @replace);
UPDATE `wp_posts` SET `post_content`=REPLACE(post_content, @search, @replace);

Site URL'nizi eski alan adından yeni alan adına değiştirmeniz ve ardından PHPMYADMIN kullanarak MySQL'de sorguyu yürütmeniz yeterlidir.

Daha fazla referans için, bu Eğiticiyi okuyabilirsiniz .

https://tryvary.com/wordpress-change-url-in-database-using-mysql-query/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.