Rozpoczynając od nowej instalacji sieciowej, pierwszym krokiem jest instalacja z jedną witryną, która zawiera jeden dodatkowy wiersz w wp-config.php
pliku:
define( 'WP_ALLOW_MULTISITE', true );
Następnie musimy przejść do Tools > Network Setup
, wprowadzić pewne szczegóły, takie jak nazwa sieci i e-mail superadministratora, a następnie nacisnąć przycisk, aby uruchomić instalację.
Następny krok, który wyskakuje, to właściwie dwa kroki:
Dodaj dodatkowe stałe do
wp-config.php
plikudefine( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', 'example.com' ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', true ); define( 'BLOG_ID_CURRENT_SITE', true );
- Dodaj kilka reguł do swojego
.htaccess
pliku.
Ponieważ nie wykonuję instalacji pojedynczej witryny (już bez tego powodu), chciałbym dynamicznie dodawać te stałe do mojego wp-config.php
pliku:
define( 'WP_ALLOW_MULTISITE', true );
if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )
{
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', true );
define( 'BLOG_ID_CURRENT_SITE', true );
}
Więc nie muszę za wp-config.php
każdym razem wchodzić i edytować go ponownie.
1-ci rzeczą, która przyszła mi do głowy było sprawdzenie DB na {$wpdb->prefix}sitemeta
stole, ale nie chcę robić dodatkowego obciążenia kwerendy na każdej stronie. 2-cia rzecz myślałem o to, by sprawdzić, czy blogs.dir
już istnieje, ale nie jest to przypadek.
Pytanie: Jak mogę wskazać, że już przeszedłem pierwszy etap konfiguracji sieci w sposób, który nie ma dużego obciążenia lub zmniejsza wydajność.
wp-config
generator Grunt .Odpowiedzi:
Nie testowałem tego, ale gdybyś musiał znaleźć takie rozwiązanie, prawdopodobnie spróbowałbym to zrobić w następujący sposób, dodając skrypt do
if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )
opisanego powyżej stanu, który:{$wpdb->prefix}sitemeta
tabeli;wp-config.php
-> return true.Zadanie WP cron przepisałoby polecenie,
wp-config.php
aby całkowicie wyeliminować sprawdzanie.W ten sposób masz tylko dodatkowe żądanie DB, dopóki sieć nie zostanie skonfigurowana, a zadanie cron wykona swoją magię.
Pamiętaj, że jest to warte wysiłku, chociaż ...;)
źródło
wp-config.php
bezpośrednio zmienić plik, ale przypuszczam, że w tym momencie zostałby zablokowany ...Sprawdź
wp-admin/network.php
iwp-admin/includes/schema.php
pliki. Możesz utworzyć warunek na podstawie WP_INSTALLING_NETWORKAktualizacja:
źródło
wp-load.php
wciąga sięwp-config.php
wcześniej, więcWP_INSTALLING_NETWORK
nie zostanie zdefiniowany. Ale nawet gdyby był dostępny, jest dostępny tylko podczas konfiguracji sieci. Co mam zrobić, aby pozostawić stałe po uruchomieniu instalacji?index.php
ściąga./wp-blog-header.php
), który następnie ściągawp-load.php
i stamtądwp-config.php
jest nazywany. Opis można znaleźć tutaj .admin.php
sam jest wywoływany przedsetup.php
inetwork.php
(i wywołujewp-load.php
się na początku), więc config już działa.WP_INSTALLING_NETWORK
siędefine()
okazuje bez sprawdzania, czy już jestdefined()
, stworzyłbymFatal Error
tam. Proszę, udowodnij mi, że się mylę i przetestuj. :)wp-config.php
pliku stanowi zagrożenie bezpieczeństwa. Pomyśl, że masz tam wszystkie ważne szczegóły. Pokazałem ci, że nie ma sposobu, aby to działało (bez zapisywalnego pliku konfiguracyjnego). To, czego szukam, to wskaźnik (który nie spowalnia systemu), który mogę sprawdzić i użyć jako przełącznika. Wszystko inne nie będzie działać.Jeśli konfiguracja jest taka sama za każdym razem (instalacja subdomeny), możesz być w stanie wkleić cały fragment w pierwszym kroku:
define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', $_SERVER[ 'HTTP_HOST' ] ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', true ); define( 'BLOG_ID_CURRENT_SITE', true );
źródło
DOMAIN_CURRENT_SITE
stałą, którą daje WordPress po zakończeniu wewnętrznej konfiguracji.