Перетворіть встановлення багатосайтового WordPress в єдиний сайт


17

Враховуючи мережу WordPress Multisite з основним блогом та припускаючи, що весь вміст було переміщено до цього блогу, як би згортати мережу назад у стандартну немережеву немережеву установку WordPress?


Нижче я знайшов два корисні посилання. Це можливо. Тут я знайшов корисну інформацію: wpmututorials.com/how-to/how-to-disable-multisite і ось тут: wordpress.org/support/topic/… Ми побачимо, як це відбувається.

Я думаю, що кращим способом викласти це було б витягнути з мережі один сайт. Згортання мережі назад справді спрацювало б лише на основному сайті, а не на створеному на ньому.
sanchothefat

Відповіді:


17

Я вже пройшов кроки, щоб витягти сайт із встановлення багатосторонніх сайтів в один екземпляр зараз:

  1. Налаштуйте чисту копію WP, але не встановлюйте її
  2. Знайдіть ідентифікатор сайту
  3. Скопіюйте файли з blogs.dir / ID / файлів у нову папку завантажень WP
  4. Скопіюйте тему, яку використовує веб-сайт, та будь-які додатки, які він використовує, у відповідні папки в новій папці вмісту wp
  5. Створіть резервну копію бази даних мультисайтів, але лише таблиці для цільового сайту та таблиці користувачів та користувачеві мета, використовуючи робочий стіл MySQL або аналогічний
  6. Відновіть резервну копію в новій базі даних та змініть префікси імені таблиці, щоб вони були однаковими, наприклад. 'wp_SITEID_' до 'wp_'
  7. Використовуючи робочий стіл MySQL або браузер запитів, впорядкуйте таблиці користувачів та usermeta так:
    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. Почніть процес установки WP, щоб створити, wp-config.phpале не натискайте "Запустити встановлення"
  9. Створіть файл .htaccess за замовчуванням, якщо використовувалися постійні посилання або просто завітайте на сторінку постійних посилань у wp-admin
  10. Далі вам потрібно буде оновити будь-які старі URL-адреси у вашій базі даних. В ідеалі використовуйте безпечний інструмент пошуку / заміни, як той, що знаходиться у wp-cli, або його загальний ціль попередника пошуку / заміни db на взаємозв’язок / it . В зокрема замінити blogs.dir/SITE_ID/filesз uploads, і якщо ви змінюєте ваш сайт URL - адреса для пошуку oldsite.comі замінити newsite.com.

Небагато зусиль, і вам слід бути обережними з правками бази даних, але це єдине, що я бачу, щоб витягнути один сайт із існуючого мультисайту з усіма його налаштуваннями тощо ... неушкодженими.

Редагувати:

Як помітив @Jake, я забув зазначити останні кроки, які, можливо, знадобиться зробити, наприклад. пошук / заміна старих URL-адрес. Я відповідно оновив список.


Нічого на кроці 7 не працювало і не мало жодного ефекту, коли я змінив SITEIDправильний ідентифікатор сайту. Замість цього слід зазначити, що siteurlі home, ймовірно, потрібно буде оновити параметри в wp_optionsтаблиці. Решта цього була досить гарним контрольним списком. Спасибі.
Джейк

Також, ймовірно, потрібно буде знайти і замінити в базі даних старий домен / новий домен, якщо зміниться. І майже ВИЗНАЧЕНО потрібно буде знайти та замінити для blogs.dir або завантаження / сайти, щоб переконатися в правильності будь-яких посилань на зображення / файли. Будьте уважні, хоча з усіма серіалізованими даними в WP. Запустити відкриту знахідку та заміну в MYSQL не дуже безпечно. Використовуйте щось на кшталт: interconnectit.com/products/…
Джейк

@Jake спасибі, я забув контекст зміни URL-адреси, і ти маєш рацію, я пропустив крок пошуку / заміни існуючих URL-адрес, додавши, що заради повноти
sanchothefat

@Jake Я не вдавався в деталі, але крок 7 в основному видаляє користувачів, які не належать до сайту, який ви виймаєте, і гарантує, що вони все ще мають правильні дозволи. Це дійсно завдання з очищення.
sanchothefat

Я зрозумів, що вони зробили, просто перша пара повернула мені помилки, але, можливо, мені щось не вистачало, і я не впевнений, що у мене були чисті користувачі, щоб прибрати, так що пропустити було все одно. І не зрозумійте мене неправильно, це було надзвичайно корисно без інших матеріалів, просто добре відзначити їх для подальшого використання. Спасибі!
Джейк

5

Можна встановити багатомісний сайт без повторного встановлення нового блогу. Виконайте дії.

  1. Створіть резервну копію, скидання бази даних та резервну копію файлів wp-вмісту
  2. Встановіть константу WP_ALLOW_MULTISITEу своєму wp-config.php наFALSE
  3. Видаліть або прокоментуйте налаштування MU у wp-config.phpтакому вигляді:

    /**
    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 .htaccess, як і джерело нижче:

    # 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. Створіть перманентні посилання нові, в бекенді wp-admin/options-permalink.phpта, можливо, скопіюйте результат у .htaccess, якщо це неможливо для WP, прав на запис у цей файл.

  6. Видалити непотрібні записи в таблиці users; використовувати наступний оператор sql в інструменті, наприклад phpMyAdmin або Adminer

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
  7. Наступні таблиці можна скинути:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (тільки, якщо вони існують)

    (зміна wp_префіксу вашої бази даних)

  8. Тепер у вас є лише останні таблиці інших блогів мережі. Якщо ви будете використовувати його також і цим контентом, експортуйте це раніше за допомогою експорту WordPress у вигляді XML та імпортуйте зараз у чистому режимі одного встановлення.


1
Це хороша відповідь, але я прийняв цю інформацію @sanchothefat, оскільки його можна використовувати для вилучення будь-якого сайту незалежно від ідентифікатора, тоді як ваші вказівки дадуть мені кореневий сайт
Tom J Nowell

1

Насправді це можливо і досить легко зробити; Я робив це сам кілька разів.

Є речі, які слід врахувати.

  1. wp-config.php, який визначає, чи багатомісний або один сайт
  2. .htaccess, який містить правила перезапису для підтримки кількох сайтів
  3. додаткові таблиці, створені для підтримки кількох сайтів

Прокоментувавши multi-site define (?) У wp-config та оновивши ваші постійні посилання, повернеться його в режим одного сайту / за замовчуванням. Тоді все, що вам потрібно зробити, - це очистити вашу базу даних.

Якщо ви з якоїсь причини не маєте доступу до свого wp-адміністратора для оновлення постійних посилань, просто видаліть свій .htaccess файл. WordPress відтворить його для вас в режимі одного сайту.

Я зроблю все можливе, щоб знайти посилання на статті з кодами / підтримкою та оновити відповідь.

Ось посилання на один пункт на форумі підтримки http://wordpress.org/support/topic/revert-to-single-site


0

Основні процеси тут добре працюють навіть у WP 3.5.1 Одне уточнення: Якщо ви щось назвали на своєму підрозділі, вам доведеться змінити посилання в базі даних, щоб видалити це ім'я. Якщо мій підрозділ був названий ... mysite.com/comics, тоді після виконання вищеописаних процедур ваш WP шукатиме mysite.com/comics та отримуватиме помилки на постійних посиланнях. Відредагуйте таблицю WP-OPTIONS, шукаючи розширення / comics та видаліть її. Крім того, переконайтеся, що каталог завантажень вказує на потрібне місце - він все ще може відображати запис blogs.dir і тепер замість цього повинен вказувати на wp-content / uploads /


Чи можете ви відредагувати це як окрему відповідь. Схоже, це може бути коментарем до однієї з інших відповідей.
s_ha_dum

0

Дуже важливим моментом, який не слід пропускати, і про нього менше говорити, є те, що ви все одно повинні мати лінію:

define( 'WP_ALLOW_MULTISITE',...

Але його слід змінити оновленим на

define( 'WP_ALLOW_MULTISITE', 0 );

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.