Biorąc pod uwagę sieć WordPress Multisite z głównym blogiem i zakładając, że cała zawartość została przeniesiona na tego bloga, jak można by zwinąć sieć z powrotem do standardowej instalacji innej niż WordPress dla sieci innych niż sieć?
Biorąc pod uwagę sieć WordPress Multisite z głównym blogiem i zakładając, że cała zawartość została przeniesiona na tego bloga, jak można by zwinąć sieć z powrotem do standardowej instalacji innej niż WordPress dla sieci innych niż sieć?
Odpowiedzi:
Przeszedłem teraz kroki, aby wyodrębnić witrynę z instalacji na wielu serwerach do jednej instancji:
DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
wp-config.php
ale nie klikaj „Uruchom instalację”blogs.dir/SITE_ID/files
z uploads
, a jeśli zmienia adres URL witryny wyszukać oldsite.com
i zastąpić newsite.com
.Spory wysiłek i trzeba uważać na edycje bazy danych, ale to jedyne, co widzę, aby wyodrębnić jedną witrynę z istniejącej witryny z wszystkimi jej ustawieniami itp. Nienaruszonymi.
EDYTOWAĆ:
Jak zauważył @Jake, zapomniałem wspomnieć o ostatnich krokach, które mogą być konieczne, np. wyszukaj / zamień stare adresy URL. Zaktualizowałem odpowiednio listę.
SITEID
prawidłowy identyfikator witryny. Zamiast tego, należy wspomnieć, że siteurl
i home
opcje będą prawdopodobnie muszą być aktualizowane w wp_options
tabeli. Reszta to całkiem niezła lista kontrolna. Dzięki.
Możliwe jest usunięcie instalacji wielu witryn bez ponownej instalacji nowego bloga. Postępuj zgodnie z instrukcjami.
WP_ALLOW_MULTISITE
w pliku wp-config.php naFALSE
Usuń lub skomentuj ustawienia MU w wp-config.php
następujący sposób:
/**
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 );
*/
Usuń ustawienia MU z .htaccess
, np. Źródła poniżej:
# 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
Utwórz linki bezpośrednie nowe, w backendie wp-admin/options-permalink.php
i być może skopiuj wynik .htaccess
, jeśli nie jest to możliwe dla WP, prawa do zapisu w tym pliku.
Usuń niepotrzebne wpisy w tabeli users
; użyj instrukcji follow sql w narzędziu, takim jak phpMyAdmin lub Adminer
`ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
Można usunąć następujące tabele:
(zmień wp_
na prefiks bazy danych)
Teraz masz tylko ostatnie tabele innych blogów w sieci. Jeśli będziesz używać tej zawartości, wyeksportuj ją wcześniej za pomocą WordPressa jako eksport XML i zaimportuj teraz w czystej instalacji pojedynczej.
W rzeczywistości jest to możliwe i dość łatwe do zrobienia; Zrobiłem to sam kilka razy.
Są rzeczy do rozważenia.
Komentowanie multi-site-definiowania (?) W wp-config i aktualizacja permalinków spowoduje przywrócenie strony do trybu pojedynczej strony / domyślnego. Następnie wystarczy wyczyścić bazę danych.
Jeśli z jakiegoś powodu nie możesz uzyskać dostępu do administratora wp-admin, aby zaktualizować łącza bezpośrednie, po prostu usuń plik .htaccess. WordPress odtworzy go dla ciebie w trybie pojedynczej witryny.
Zrobię co w mojej mocy, aby znaleźć link do kodu / artykułu pomocy technicznej i zaktualizować odpowiedź.
Oto link do jednego elementu na forum pomocy http://wordpress.org/support/topic/revert-to-single-site
Podstawowe procesy tutaj działają dobrze nawet w WP 3.5.1. Jedno wyjaśnienie: jeśli nazwałeś swoją podwitrynę, będziesz musiał zmienić łącza w bazie danych, aby usunąć tę nazwę. Jeśli moja podwitryna została nazwana ... mysite.com/comics, to po wykonaniu powyższych procedur twoja WP będzie szukać mysite.com/comics i otrzyma błędy w linkach bezpośrednich. Edytuj tabelę WP-OPTIONS, szukając rozszerzenia / comics i usuń je. Sprawdź również, czy katalog Uploads wskazuje właściwą lokalizację - może nadal wyświetlać wpis blogs.dir i powinien teraz wskazywać na wp-content / uploads /