Chuyển đổi cài đặt WordPress nhiều trang thành một trang web duy nhất


17

Đưa ra một mạng WordPress Multisite, với một blog chính và giả sử tất cả nội dung đã được chuyển sang blog đó, làm thế nào để thu gọn mạng trở lại thành một cài đặt không đa mạng WordPress tiêu chuẩn?


Tôi tìm thấy hai liên kết hữu ích dưới đây, điều này có thể. Tôi tìm thấy thông tin hữu ích ở đây: wpmututorials.com/how-to/how-to-disable-multisite và tại đây: wordpress.org/support/topic/ Khăn Chúng tôi sẽ xem mọi thứ diễn ra như thế nào.

Tôi nghĩ rằng một cách tốt hơn để diễn đạt nó là trích xuất một trang web duy nhất từ ​​một mạng. Thu gọn lại một mạng sẽ chỉ thực sự hoạt động trên trang chính chứ không phải bất kỳ trang nào được tạo trên đó.
sanchothefat

Câu trả lời:


17

Bây giờ tôi đã thực hiện các bước để trích xuất một trang web từ cài đặt nhiều trang thành một phiên bản duy nhất bây giờ:

  1. Thiết lập một bản sao sạch của WP nhưng không cài đặt nó
  2. Tìm ID trang web
  3. Sao chép các tệp từ blog.dir / ID / tệp vào thư mục tải lên WP mới
  4. Sao chép chủ đề mà trang web sử dụng và mọi plugin mà nó sử dụng vào các thư mục phù hợp trong thư mục nội dung wp mới
  5. Sao lưu cơ sở dữ liệu nhiều trang nhưng chỉ các bảng cho trang đích và bảng người dùng và bảng usermeta sử dụng bàn làm việc của MySQL hoặc tương đương
  6. Khôi phục bản sao lưu vào cơ sở dữ liệu mới và thay đổi tiền tố tên bảng để tất cả chúng đều giống nhau, vd. 'wp_SITEID_' thành 'wp_'
  7. Sử dụng bàn làm việc MySQL hoặc trình duyệt truy vấn để dọn dẹp bảng người dùng và bảng usermeta như vậy:
    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. Bắt đầu quá trình cài đặt WP để tạo wp-config.phpnhưng không nhấp vào 'Chạy cài đặt'
  9. Tạo tệp .htaccess mặc định nếu permalinks đang được sử dụng hoặc chỉ cần truy cập trang permalinks trong wp-admin
  10. Bạn sẽ cần cập nhật bất kỳ URL cũ nào trong cơ sở dữ liệu của bạn tiếp theo. Tốt nhất là sử dụng một công cụ tìm kiếm / thay thế an toàn như công cụ trong wp-cli hoặc tìm kiếm / thay thế tiền thân cho mục đích chung của nó bằng cách kết nối / nó . Cụ thể thay thế blogs.dir/SITE_ID/filesbằng uploadsvà nếu bạn thay đổi tìm kiếm URL trang web của bạn oldsite.comvà thay thế bằng newsite.com.

Một chút nỗ lực và bạn phải cẩn thận với các chỉnh sửa cơ sở dữ liệu nhưng đó là điều duy nhất tôi có thể thấy để trích xuất một trang web từ nhiều trang hiện có với tất cả các cài đặt của nó, v.v ... còn nguyên vẹn.

BIÊN TẬP:

Như được phát hiện bởi @Jake, tôi đã quên đề cập đến các bước cuối cùng mà bạn có thể cần thực hiện, ví dụ. tìm kiếm / thay thế các URL cũ. Tôi đã cập nhật danh sách cho phù hợp.


Không có gì trong bước 7 hoạt động hoặc có bất kỳ ảnh hưởng nào khi tôi thay đổi SITEIDthành id trang web chính xác. Thay vào đó, bạn nên đề cập rằng các tùy chọn siteurlhomecó thể sẽ cần phải được cập nhật trong wp_optionsbảng. Phần còn lại của danh sách này là khá tốt. Cảm ơn.
Jake

Cũng có thể sẽ cần phải tìm và thay thế trên cơ sở dữ liệu cho tên miền cũ / tên miền mới nếu thay đổi. Và gần như sẽ HOÀN TOÀN cần phải tìm và thay thế cho blog.dir hoặc tải lên / trang web để đảm bảo mọi liên kết đến hình ảnh / tệp đều chính xác. Hãy cẩn thận với tất cả các dữ liệu được tuần tự hóa trong WP. Sẽ không an toàn khi chạy một tìm kiếm mở và thay thế trong MYSQL. Sử dụng một cái gì đó như: interconnectit.com/products/ trộm
Jake

@ Xin cảm ơn, tôi đã quên bối cảnh thay đổi URL và bạn nói đúng Tôi đã bỏ lỡ bước tìm kiếm / thay thế cho các URL hiện có, thêm vào đó để hoàn thiện
sanchothefat

@Jake Tôi không đi sâu vào chi tiết nhưng về cơ bản, bước 7 sẽ xóa người dùng không thuộc về trang web bạn đang giải nén và đảm bảo họ vẫn có quyền chính xác. Đó là một nhiệm vụ làm sạch thực sự.
sanchothefat

Tôi hiểu những gì họ đã làm, chỉ là cặp vợ chồng đầu tiên trả lại lỗi cho tôi, nhưng có lẽ tôi đang thiếu thứ gì đó, và tôi không chắc là tôi có bất kỳ người dùng nào để dọn dẹp, vì vậy dù sao cũng dễ dàng bỏ qua. Và đừng hiểu sai ý tôi, điều này cực kỳ hữu ích nếu không có những thứ khác, chỉ cần lưu ý để sử dụng trong tương lai. Cảm ơn!
Jake

5

Có thể loại bỏ cài đặt nhiều trang mà không cần cài đặt lại một blog mới. Thực hiện theo các bước.

  1. Tạo bản sao lưu, kết xuất cơ sở dữ liệu và sao lưu tệp của nội dung wp
  2. Đặt hằng số WP_ALLOW_MULTISITEtrong wp-config.php của bạn thànhFALSE
  3. Xóa hoặc nhận xét cài đặt MU trong wp-config.php, như thế này:

    /**
    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. Xóa cài đặt MU khỏi .htaccess, như nguồn bên dưới:

    # 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. Tạo permalinks mới, trong phần phụ trợ wp-admin/options-permalink.phpvà có thể sao chép kết quả vào .htaccess, nếu WP không thể, quyền ghi vào tệp này.

  6. Loại bỏ các mục không hữu ích trong bảng users; sử dụng câu lệnh sql follow trong một công cụ, như phpMyAdmin hoặc Adminer

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
  7. Các bảng sau có thể được loại bỏ:

    • wp_bloss
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitec chuyên mục (chỉ, nếu tồn tại)

    (thay đổi wp_tiền tố cơ sở dữ liệu của bạn)

  8. Bây giờ bạn chỉ có các bảng cuối cùng của các blog khác của mạng. Nếu bạn cũng sẽ sử dụng nội dung này, thì hãy xuất nội dung này trước khi xuất qua WordPress dưới dạng XML và nhập ngay trong cài đặt đơn.


1
Đây là một câu trả lời hay, nhưng, tôi đã chấp nhận câu trả lời của @sanchothefat vì nó có thể được sử dụng để trích xuất bất kỳ trang web nào bất kể ID, trong khi hướng dẫn của bạn sẽ cung cấp cho tôi trang web gốc
Tom J Nowell

1

Trên thực tế nó có thể và khá dễ dàng để làm; Tôi đã thực hiện nó nhiều lần.

Có những điều cần xem xét.

  1. wp-config.php định nghĩa nếu nhiều trang hoặc một trang
  2. .htaccess chứa các quy tắc viết lại để hỗ trợ nhiều trang web
  3. các bảng bổ sung được tạo để hỗ trợ nhiều trang web

Nhận xét về định nghĩa đa trang web (?) Trong wp-config và cập nhật permalinks của bạn sẽ hoàn nguyên trang web về chế độ mặc định / trang web duy nhất. Sau đó, tất cả những gì bạn phải làm là dọn sạch cơ sở dữ liệu của bạn.

Nếu vì một lý do nào đó, bạn không thể truy cập wp-admin của mình để cập nhật permalinks chỉ cần xóa tệp .htaccess của bạn. WordPress sẽ tạo lại nó cho bạn trong chế độ trang web duy nhất.

Tôi sẽ làm hết sức mình để tìm liên kết đến bài viết về mã / hỗ trợ và cập nhật câu trả lời với nó.

Đây là một liên kết đến một mục trên diễn đàn hỗ trợ http://wordpress.org/support/topic/revert-to-single-site


0

Các quy trình cơ bản ở đây hoạt động tốt ngay cả trong WP 3.5.1 Một cách làm rõ: Nếu bạn đặt tên trang con của mình, bạn sẽ phải thay đổi các liên kết trong cơ sở dữ liệu để xóa tên đó. Nếu trang con của tôi được đặt tên là ... mysite.com/comics thì sau khi làm theo các quy trình trên, WP của bạn sẽ tìm kiếm mysite.com/comics và gặp lỗi trên permalinks. Chỉnh sửa bảng WP-OPTIONS tìm kiếm tiện ích mở rộng / truyện tranh và xóa nó. Ngoài ra, hãy kiểm tra xem thư mục Tải lên đang trỏ đến vị trí thích hợp - nó vẫn có thể hiển thị một mục blog.dir và bây giờ thay vào đó hãy trỏ đến wp-content / uploads /


Bạn có thể vui lòng chỉnh sửa nó để là một câu trả lời độc lập. Có vẻ như nó có thể là một nhận xét về một trong những câu trả lời khác.
s_ha_dum

0

Điểm rất quan trọng không nên bỏ qua, và nó ít được nói đến, đó là bạn vẫn nên dòng:

define( 'WP_ALLOW_MULTISITE',...

Nhưng nó nên được thay đổi cập nhật thành

define( 'WP_ALLOW_MULTISITE', 0 );

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.