Cum să convertești o instalare WordPress Multisite într-un site single

8 aug. 2011, 13:14:30
Vizualizări: 12.8K
Voturi: 19

Având o rețea WordPress Multisite, cu un blog principal și presupunând că tot conținutul a fost mutat pe acel blog, cum ai putea să transformi rețeaua înapoi într-o instalație WordPress standard, fără rețea și fără funcționalitatea multisite?

2
Comentarii

Am găsit două link-uri utile mai jos, acest lucru ESTE posibil. Am găsit informații utile aici: http://wpmututorials.com/how-to/how-to-disable-multisite/ și aici: http://wordpress.org/support/topic/wordpress-mu-multisite-wordpress-single-wordpress-instance Vom vedea cum merge.

User User
28 mar. 2012 01:20:59

Cred că o formulare mai bună ar fi extragerea unui singur site dintr-o rețea. Revenirea la o rețea inițială ar funcționa doar pentru site-ul principal, nu și pentru celelalte site-uri create în cadrul acesteia.

sanchothefat sanchothefat
3 ian. 2013 13:06:55
Toate răspunsurile la întrebare 5
5
19

Am parcurs pașii pentru a extrage un site dintr-o instalare multisite într-o instanță individuală:

  1. Configurează o copie curată de WP dar nu o instala
  2. Găsește ID-ul site-ului
  3. Copiază fișierele din blogs.dir/ID/files în noul folder uploads al WP
  4. Copiază tema utilizată de site și orice plugin-uri în folderele corespunzătoare din noul folder wp-content
  5. Fă o copie de rezervă a bazei de date multisite, dar doar tabelele pentru site-ul țintă și tabelele users și usermeta folosind MySQL Workbench sau echivalent
  6. Restaurează copia de rezervă într-o nouă bază de date și schimbă prefixele numelor tabelelor astfel încât să fie toate la fel, de ex. 'wp_SITEID_' în 'wp_'
  7. Folosind MySQL Workbench sau Query Browser, curăță tabelele users și usermeta astfel:
    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. Începe procesul de instalare WP pentru a crea un wp-config.php dar nu face click pe 'Run the install'
  9. Creează un fișier .htaccess implicit dacă erau folosite permalink-uri sau pur și simplu vizitează pagina de permalink-uri în wp-admin
  10. Va trebui să actualizezi orice URL-uri vechi din baza ta de date. Ideal ar fi să folosești un instrument sigur de căutare/înlocuire precum cel din wp-cli sau predecesorul său general search/replace db by interconnect/it. Specific, înlocuiește blogs.dir/SITE_ID/files cu uploads și dacă schimbi URL-ul site-ului tău, caută oldsite.com și înlocuiește cu newsite.com.

Destul de mult efort și trebuie să fii atent cu modificările în baza de date, dar asta este singura metodă pe care o văd pentru a extrage un singur site dintr-un multisite existent cu toate setările etc. intacte.

EDIT:

După cum a observat @Jake, am uitat să menționez pașii finali pe care ar trebui să-i faci, de ex. căutare/înlocuire a URL-urilor vechi. Am actualizat lista în consecință.

3 ian. 2013 13:05:41
Comentarii

Nimic din pasul 7 nu a funcționat sau a avut vreun efect când am schimbat SITEID cu ID-ul corect al site-ului. În loc de asta, ar trebui să menționezi că opțiunile siteurl și home vor trebui probabil actualizate în tabela wp_options. Restul acestui ghid a fost destul de bun. Mulțumesc.

Jake Jake
2 dec. 2013 03:31:11

De asemenea, va fi probabil necesar să faci o căutare și înlocuire în baza de date pentru vechiul domeniu / noul domeniu dacă se schimbă. Și va fi aproape SIGUR necesar să faci căutare și înlocuire pentru blogs.dir sau uploads/sites pentru a te asigura că toate linkurile către imagini/fișiere sunt corecte. Fii atent însă cu toate datele serializate din WP. Nu este foarte sigur să rulezi o căutare și înlocuire deschisă în MYSQL. Folosește ceva de genul: http://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Jake Jake
2 dec. 2013 03:40:38

@Jake mulțumesc, am uitat contextul schimbării URL-ului și ai dreptate, am omis pasul de căutare/înlocuire pentru URL-urile existente, adaug asta pentru completitudine

sanchothefat sanchothefat
2 dec. 2013 15:35:13

@Jake Nu am intrat în detalii, dar pasul 7 practic elimină utilizatorii care nu aparțin site-ului din care extrăgeți și asigură că ei încă au permisiunile corecte. Este de fapt o sarcină de curățenie.

sanchothefat sanchothefat
2 dec. 2013 15:45:28

Am înțeles ce au făcut, doar că primele câteva mi-au returnat erori, dar poate am ratat ceva și nu sunt sigur că aveam vreun utilizator de curățat, așa că a fost ușor să sar peste oricum. Și să nu mă înțelegeți greșit, acest lucru a fost extrem de util și fără celelalte aspecte, doar că e bine de notat pentru utilizarea viitoare. Mulțumesc!

Jake Jake
2 dec. 2013 17:29:26
1

Este posibil să eliminați instalarea multisite fără a reinstala un nou blog. Urmați pașii.

  1. Creați o copie de rezervă, un dump al bazei de date și o copie de rezervă a fișierelor din wp-content
  2. Setați constanta WP_ALLOW_MULTISITE în wp-config.php la FALSE
  3. Eliminați sau comentați setările MU în wp-config.php, astfel:

    /**
    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. Eliminați setările MU din .htaccess, precum în sursa de mai jos:

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    
    # fișiere încărcate
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # adăugați o bară oblică la final pentru /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. Creați din nou legăturile permanente în backend wp-admin/options-permalink.php și eventual copiați rezultatul în .htaccess, dacă WP nu are drepturi de scriere pe acest fișier.

  6. Eliminați intrările inutile din tabelul users; utilizați următoarea instrucțiune SQL într-un instrument precum phpMyAdmin sau Adminer

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
    
  7. Următoarele tabele pot fi șterse:

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (doar dacă există)

    (schimbați wp_ cu prefixul dumneavoastră al bazei de date)

  8. Acum aveți doar tabelele rămase de la alte bloguri din rețea. Dacă doriți să utilizați și acest conținut, exportați-l mai întâi prin exportul WordPress ca XML și importați-l acum în instalarea curată single.

3 ian. 2013 14:47:40
Comentarii

Acesta este un răspuns bun, dar am acceptat cel oferit de @sanchothefat deoarece poate fi folosit pentru a extrage orice site indiferent de ID, în timp ce instrucțiunile tale mi-ar oferi doar site-ul rădăcină

Tom J Nowell Tom J Nowell
3 ian. 2013 15:08:49
0

De fapt, este posibil și destul de ușor de realizat; am făcut-o de mai multe ori personal.

Există trei lucruri de luat în considerare.

  1. wp-config.php care definește dacă este un site multiplu sau un singur site
  2. .htaccess care conține regulile de rescriere pentru a suporta site-ul multiplu
  3. tabelele suplimentare create pentru a suporta site-ul multiplu

Comentarea define-ului pentru site-ul multiplu în wp-config și actualizarea legăturilor permanente va readuce site-ul în modul single site/implicit. Apoi, tot ce trebuie să faci este să cureți baza de date.

Dacă din anumite motive nu poți accesa wp-admin pentru a actualiza legăturile permanente, pur și simplu șterge fișierul .htaccess. WordPress îl va recrea pentru tine în modul single site.

Voi încerca să găsesc link-ul către codurile/articolul de suport și voi actualiza răspunsul cu acesta.

Iată un link către un subiect din forumul de suport http://wordpress.org/support/topic/revert-to-single-site

6 nov. 2012 18:06:58
1

Procesele de bază prezentate aici funcționează bine chiar și în WP 3.5.1. O clarificare: Dacă ai denumit sub-site-ul tău într-un anumit fel, va trebui să modifici legăturile din baza de date pentru a elimina acel nume. Dacă sub-site-ul meu se numea... mysite.com/comics, după ce urmezi procedurile de mai sus, WordPress-ul tău va căuta mysite.com/comics și va primi erori la legăturile permanente. Editează tabela WP-OPTIONS căutând extensia /comics și elimin-o. De asemenea, verifică dacă directorul Uploads indică locația corectă - este posibil să mai afișeze o intrare blogs.dir și ar trebui să indice acum wp-content/uploads/

12 mar. 2013 20:50:50
Comentarii

Poți să editezi acest lucru pentru a fi un răspuns independent? Pare că ar trebui să fie un comentariu la unul dintre celelalte răspunsuri.

s_ha_dum s_ha_dum
12 mar. 2013 21:29:53
0

Punctul foarte important care nu ar trebui să fie omis și despre care se vorbește mai puțin este că totuși ar trebui să aveți linia:

define( 'WP_ALLOW_MULTISITE',...

Dar ar trebui să fie actualizată la

define( 'WP_ALLOW_MULTISITE', 0 );

22 aug. 2014 22:22:44