Çok Siteli WordPress kurulumunu Tek bir siteye dönüştürme


17

Ana blog içeren bir WordPress Multisite ağı verildiğinde ve tüm içeriğin bu blog'a taşındığı varsayılarak, ağ standart WordPress ağ dışı çoklu site kurulumuna nasıl daraltılabilir?


Aşağıda iki yararlı bağlantı buldum, bu mümkün. Burada yararlı bilgiler buldum: wpmututorials.com/how-to/how-to-disable-multisite ve burada: wordpress.org/support/topic/… Nasıl gittiğini göreceğiz.

Ben bir ağdan tek bir site ayıklamak olacağını ifade daha iyi bir yol olduğunu düşünüyorum. Bir ağı geri daraltmak, ana siteyi oluşturduğunda gerçekten işe yaramaz.
sanchothefat

Yanıtlar:


17

Şimdi bir siteyi çok siteli bir kurulumdan tek bir örneğe çıkarmak için adımlardan geçtim:

  1. WP'nin temiz bir kopyasını oluşturun ancak yüklemeyin
  2. Site kimliğini bulma
  3. Blogs.dir / ID / dosyalarındaki dosyaları yeni WP yüklemeleri klasörüne kopyalayın
  4. Sitenin kullandığı temayı ve kullandığı eklentileri yeni wp içerik klasöründeki uygun klasörlere kopyalayın
  5. Çok siteli veritabanını yedekleyin, ancak MySQL çalışma tezgahını veya eşdeğerini kullanarak yalnızca hedef site tablolarını ve kullanıcılar ve usermeta tablolarını alın
  6. Yedeği yeni bir veritabanına geri yükleyin ve tablo adı öneklerini aynı olacak şekilde değiştirin. 'wp_SITEID_' - 'wp_'
  7. MySQL çalışma tezgahını veya sorgu tarayıcısını kullanarak kullanıcıları ve usermeta tablolarını düzenli olarak toplayın:
    1. DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    2. DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    3. UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
    4. UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
  8. Oluşturmak için WP kurulum işlemine başlayın wp-config.phpancak 'Kurulumu çalıştır'ı tıklamayın
  9. Kalıcı bağlantılar kullanılıyorsa varsayılan bir .htaccess dosyası oluşturun veya sadece wp-admin'deki kalıcı bağlantılar sayfasını ziyaret edin
  10. Daha sonra veritabanınızdaki eski URL'leri güncellemeniz gerekir. İdeal olarak wp-cli'deki gibi güvenli bir arama / değiştirme aracı veya genel amaçlı öncü arama / değiştirme db'yi interconnect / it ile kullanın . Özellikle blogs.dir/SITE_ID/filesile uploadsdeğiştirin ve sitenizin URL'sini oldsite.comdeğiştiriyorsanız arama yapın ve değiştirin newsite.com.

Adil bir çaba ve veritabanı düzenlemeleri dikkatli olmak zorunda ama tek bir siteyi mevcut tüm çok siteden vb.

DÜZENLE:

@Jake tarafından tespit edildiği gibi, örneğin atmanız gerekebilecek son adımlardan bahsetmeyi unuttum. eski URL'leri arama / değiştirme. Listeyi buna göre güncelledim.


Adım 7'deki hiçbir şey SITEID, doğru site kimliğiyle değiştirdiğimde hiçbir işe yaramadı veya herhangi bir etkisi olmadı . Bunun yerine, siteurlve homeseçeneklerinin büyük olasılıkla wp_optionstabloda güncellenmesi gerekeceğini belirtmelisiniz . Bu geri kalanı oldukça iyi bir kontrol listesi oldu. Teşekkürler.
Jake

Ayrıca, değiştirilirse eski etki alanı / yeni etki alanı için veritabanında bir bulma ve değiştirme yapmanız gerekecektir. Ve neredeyse kesinlikle görüntü / dosya bağlantılarının doğru olduğundan emin olmak için blogs.dir veya yüklemeler / siteler için bulma ve değiştirme yapmanız gerekecektir. Ancak WP'deki tüm serileştirilmiş verilerle dikkatli olun. MYSQL'de bir açık bulma ve değiştirme yapmak çok güvenli değildir. Şunun gibi bir şey kullanın: interconnectit.com/products/…
Jake

@Jake teşekkürler, URL'yi değiştirme bağlamını unuttum ve haklısın, mevcut URL'ler için arama / değiştirme adımını kaçırdım, bunu tamlık uğruna
ekledim

@ Ayrıntıya girmedim, ancak 7. adım temelde ayıkladığınız siteye ait olmayan kullanıcıları kaldırır ve hala doğru izinlere sahip olduklarından emin olur. Gerçekten temiz bir görev.
sanchothefat

Ne yaptıklarını anladım, sadece ilk çift benim için hatalar döndürdü, ama belki bir şey eksiktim ve temizlemek için herhangi bir kullanıcım olduğundan emin değilim, bu yüzden yine de atlamak kolaydı. Ve beni yanlış anlamayın, bu diğer şeyler olmadan son derece yararlı oldu, sadece ileride kullanmak için not etmek iyi. Teşekkürler!
Jake

5

Çok siteli yüklemeyi yeni bir blog yüklemeden kaldırmak mümkündür. Adımları izleyin.

  1. Wp-content yedekleme, veritabanı dökümü ve dosya yedekleme oluşturma
  2. WP_ALLOW_MULTISITEWp-config.php dosyasında sabit olarakFALSE
  3. Aşağıdaki wp-config.phpgibi MU ayarlarını kaldırın veya yorumlayın :

    /**
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', false );
    $base = '/wordpress/';
    define( 'DOMAIN_CURRENT_SITE', 'localhost' );
    define( 'PATH_CURRENT_SITE', '/wordpress/' );
    define( 'SITE_ID_CURRENT_SITE', 1 );
    define( 'BLOG_ID_CURRENT_SITE', 1 );
    */
  4. MU ayarlarını .htaccessaşağıdaki kaynak gibi kaldırın :

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin        
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    # END WordPress
  5. Kalıcı bağlantıları arka uçta yeni oluşturun ve wp-admin/options-permalink.phpsonucu .htaccessWP için mümkün değilse bu dosyaya yazma haklarına kopyalayın .

  6. Tablodaki gereksiz girişleri kaldırın users; phpMyAdmin veya Adminer gibi bir araçta aşağıdaki sql deyimini kullanın

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
  7. Aşağıdaki tablolar bırakılabilir:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (yalnızca varsa)

    ( wp_veritabanı önekinizde değişiklik yapın)

  8. Artık ağdaki diğer blogların yalnızca son tablolarına sahipsiniz. Bu içeriği de kullanacaksanız, daha önce WordPress üzerinden XML olarak dışa aktarın ve şimdi temiz tek yüklemede içe aktarın.


1
Bu iyi bir cevap, ama kimliğinden bağımsız olarak herhangi bir siteyi çıkarmak için kullanılabileceği için @sanchothefat tarafından kabul ettim, oysa talimatlarınız bana kök siteyi verecekti
Tom J Nowell

1

Aslında mümkün ve oldukça kolaydır; Birkaç kez kendim yaptım.

Dikkate alınması gereken şeyler var.

  1. Çoklu site mi yoksa tek site mi
  2. Birden çok siteyi desteklemek için yeniden yazma kurallarını içeren .htaccess
  3. çoklu siteyi desteklemek için oluşturulan ek tablolar

Wp-config çoklu site tanımını (?) Yorumlamak ve kalıcı bağlantılarınızı güncellemek siteyi tek bir siteye / varsayılan moda geri döndürür. O zaman tek yapmanız gereken veritabanınızı temizlemek.

Herhangi bir nedenle kalıcı bağlantıları güncellemek için wp-admin'inize erişemiyorsanız .htaccess dosyanızı silin. WordPress sizin için tek site modunda yeniden oluşturacaktır.

Kodlar / destek makalesinin bağlantısını bulmak ve yanıtı güncellemek için elimden geleni yapacağım.

Destek forumundaki bir öğenin bağlantısı http://wordpress.org/support/topic/revert-to-single-site


0

Buradaki temel işlemler WP 3.5.1'de bile iyi çalışır. Bir açıklama: Alt sitenize bir şey adlandırdıysanız, bu adı kaldırmak için veritabanındaki bağlantıları değiştirmeniz gerekir. Alt sitem ... mysite.com/comics olarak adlandırılmışsa, yukarıdaki prosedürleri uyguladıktan sonra WP'niz mysite.com/comics'i arayacak ve kalıcı bağlantılarda hata alacaktır. WP-OPTIONS tablosunu / comics uzantısını arayarak düzenleyin ve kaldırın. Ayrıca, Yüklemeler dizininin doğru konumu gösterdiğini kontrol edin - yine de bir blogs.dir girişi gösterebilir ve şimdi wp-content / uploads /


Bunu tek başına cevap olarak düzenleyebilir misiniz? Öyle görünüyor ki, diğer cevaplardan birine bir yorum olmalı.
s_ha_dum

0

Kaçırılmaması gereken ve daha az konuşulan en önemli nokta, hala çizgiye sahip olmanızdır :

define( 'WP_ALLOW_MULTISITE',...

Ancak şu şekilde güncellenmelidir:

define( 'WP_ALLOW_MULTISITE', 0 );

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.