Giả sử tất cả các cài đặt đều trên cùng một ví dụ và do đó có thể có cùng các tệp được chia sẻ giữa chúng, thì điều chính bạn cần làm là để tất cả các nội dung tùy chỉnh nằm bên ngoài các thư mục WordPress chính.
Vì vậy, trước tiên, bạn sẽ muốn có một bản sao mới của WordPress ở đâu đó, không bị ảnh hưởng (và không thể chạm tới, toàn bộ vấn đề là có một bản sao duy nhất, phải không?).
Tiếp theo, bạn sẽ sử dụng liên kết cứng hoặc liên kết tượng trưng để phản chiếu các tệp đó ở nơi khác. Thông thường trong các môi trường giống như unix, bạn sử dụng ln -s
để thực hiện liên kết tượng trưng. Làm thế nào để làm điều này cụ thể là để lại cho người đọc, nhưng về cơ bản nếu bạn có WordPress của bạn trong / example / wp, bạn sẽ làm một cái gì đó tương tự ln -s /example/wp /home/username/public_html/wp
hoặc một cái gì đó tương tự. Nếu liên kết sym gây ra sự cố, thay vào đó hãy chuyển sang liên kết cứng.
Bây giờ, hai thứ chính nằm trong thư mục WordPress chính, nhưng là tùy chỉnh và không phải là một phần của "lõi" là wp-config.php
tệp của bạn và toàn bộ wp-content
thư mục. Vì vậy, chúng ta cần lấy những thứ này bên ngoài thư mục main / wp cho mỗi trang web. Cả hai điều này đều có thể.
Tệp wp-config.php rất dễ, bởi vì mặc định WordPress cũng kiểm tra một thư mục từ chính nó. Nếu thư mục wp của bạn đang ở /home/username/public_html/wp
, thì WP sẽ kiểm tra /home/username/public_html/wp/wp-config.php
, nhưng không thể tìm thấy nó /home/username/public_html/wp-config.php
. Vì vậy, chỉ cần làm cho các tập tin wp-config.php của bạn trong thư mục trên.
Đối với thư mục wp-content, bạn có thể định vị lại nó bên ngoài thư mục wp chính bằng cách thêm mã vào tệp wp-config.php của bạn như sau:
define( 'WP_CONTENT_DIR', '/home/username/public_html/custom-content' );
define( 'WP_CONTENT_URL', 'http://example.com/custom-content');
Và sau đó WordPress sẽ mong đợi nội dung và mọi thứ trong đó sẽ sống ở đó. Thư mục wp-content bên trong thư mục / wp sẽ bị bỏ qua hoàn toàn, vì vậy bạn sẽ phải tạo thư mục này và đặt các chủ đề / plugin / tải lên của bạn vào đó.
Bước cuối cùng là sử dụng .htaccess (hoặc một số tệp cấu hình khác nếu bạn không sử dụng Apache) xem thư mục / wp hiển thị từ thư mục gốc, như thể nó ở đó. Điều này không khó, nó chỉ cần một chút suy nghĩ. Xem, các quy tắc .htaccess WordPress bình thường (đối với permalinks không mặc định) về cơ bản yêu cầu Apache chuyển hướng tất cả các yêu cầu đến tệp chính index.php của WordPress nếu yêu cầu không tham chiếu tệp thực sự tồn tại. Điều này cho phép tải lên hình ảnh và như vậy để làm việc trực tiếp, bên ngoài WP.
Dưới đây là một quy tắc ví dụ bạn có thể sử dụng trong /home/username/public_html/.htaccess để bắt chước điều này, nhưng cũng chiếm tài khoản cho thư mục / wp.
Options -Indexes
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wp/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wp/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ wp/index.php [L]
Về cơ bản, các quy tắc này nói hai điều.
Đầu tiên: Nếu URL được yêu cầu không có / wp / trong đó và đó không phải là tệp hoặc thư mục hiện có, thì hãy thay đổi URL bằng cách viết lại nội bộ thành có / wp / trước nó. Điều này có tác dụng ánh xạ lại tất cả các URL từ http://example.com/whthing đến http://example.com/wp/whthing . Về cơ bản, nó làm cho nó hoạt động như thể / wp / thực sự nằm trong thư mục gốc của trang web.
Quy tắc thứ hai thay đổi các yêu cầu cho url gốc (chỉ /) thành tệp /wp/index.php. Điều này có thể không thực sự cần thiết, nhưng nó hoạt động với tôi.
Điều này cho phép thư mục / wp vẫn "thuần", như vậy, và do đó bạn có thể sử dụng các liên kết tượng trưng hoặc liên kết cứng để giữ cài đặt một-true-WP ở một nơi khác, không bị ảnh hưởng bởi các công cụ cụ thể của trang web.
Lưu ý rằng nhiều plugin được viết xấu (và thậm chí một vài chủ đề) có thể đưa ra giả định rằng chúng nằm trong thư mục wp-content chính. Bất cứ điều gì làm một cái gì đó ngu ngốc như include '../../../wp-load.php';
hoặc tương tự sẽ bị phá vỡ bởi phương pháp này. Lỗi này là một phần của plugin / theme. Không có plugin / theme nào bao gồm wp-load .