Zaawansowany przewodnik programisty dotyczący pliku wp-config.php

Opublikowany: 2022-09-28

Jak dobrze znasz wp-config ? W tych kilku linijkach PHP jest zaskakująca moc! Ten artykuł jest przewodnikiem po niektórych fragmentach wp-config , o których być może nie wiedziałeś, ale naprawdę powinieneś.

Czy wiesz wszystko , co trzeba wiedzieć o pliku wp-config.php ? Czy przeczytałeś o tym całą stronę dokumentacji WordPressa? Do samego końca?

Jeśli znasz już podstawy wp-config , przeczytanie oficjalnej dokumentacji WordPressa będzie prawdopodobnie dobrą zabawą w drzemkę.

Jeśli chcesz prawdziwych przysmaków dla programistów, ładnie pogrupowanych według tematów i dostarczonych z czymś, co można nazwać „całkowicie niepotrzebnym entuzjazmem nad kilkoma stałymi PHP”, trzymaj się: mam zamiar sprawić, że wp-config.php znów będzie fajny.

Milhouse z Simpsonów, z napisem „wp-config” na twarzy i napisem „Moja mama mówi, że jestem fajny”.

Spis treści

  1. Kto powinien to przeczytać?
  2. Dlaczego powinieneś to przeczytać?
  3. Podstawy
  4. Przeglądanie stałych wp-config
  5. Podział procesu ładowania wp-config.php
    1. wp-config można przenieść w górę
    2. Ekran konfiguracji ładuje się, jeśli nie ma pliku wp-config.php
    3. wp-config.php ładuje się bardzo wcześnie
    4. Nie zadzieraj z wp-config.php!
  6. Sprawdzanie/linting pliku wp-config.php
  7. Zabezpieczanie WordPressa za pomocą wp-config.php
    1. Ochrona wp-config.php przed odwiedzającymi witrynę
    2. Obrotowe klucze/sole
    3. Przenoszenie i ukrywanie rzeczy
    4. Wyłączanie edytorów plików
    5. Wyłączanie automatycznych aktualizacji
    6. Zapobieganie zewnętrznym żądaniom HTTP
  8. Przenoszenie rzeczy
    1. Przenoszenie tabel użytkownika i Usermeta
    2. Przenieś zawartość, przesłane i katalogi wtyczek
  9. Ustawienia dotyczące treści
    1. Zmień adresy URL witryny i pulpitu nawigacyjnego
    2. Ustawienia posta
    3. Po rewizjach
    4. Zmiana interwału autozapisu
  10. Zawijanie

Kto powinien to przeczytać?

Ten artykuł jest skierowany do programistów i zaawansowanych użytkowników, którzy już wiedzą, jak edytować plik wp-config.php i są świadomi niektórych ustawień konfiguracyjnych, które można w nim umieścić.

Nie powiem ci, jak edytować plik za pomocą FTP lub cPanel, ani dlaczego nie powinieneś używać MS Word do jego edycji.

Nie powiem ci, jak skonfigurować bazę danych ani przejrzeć starszych ustawień, których używałeś w 2013 roku, ale naprawdę nie powinieneś ich więcej potrzebować. A większość gospodarzy i tak zajmie się za Ciebie podstawami.

Jeśli jesteś nowy w wp-config.php , nie brakuje przewodników, które dadzą ci podstawy, lub zawsze możesz zagłębić się w oficjalną dokumentację.

Dlaczego powinieneś to przeczytać?

Tak, tak, słyszę cię. Jeśli podstawowe szczegóły tego, co możesz umieścić w tym artykule, są omówione w innym miejscu, a Twój gospodarz i tak zajmuje się większością podstaw, dlaczego miałbyś to przeczytać? I rzeczywiście, dlaczego spędzam czas na pisaniu tego?

Cóż, jeśli jesteś zadowolony z edycji wp-config.php i znasz podstawy tego, co robi, to prawdopodobnie jesteś przynajmniej średniozaawansowanym programistą WordPress.

Prawdopodobnie przynajmniej częściowo odpowiadasz za hosting dużych witryn, prawdopodobnie dla klientów. Musisz więc wiedzieć, jak możesz użyć tego pliku w nagłych wypadkach. I mieć wystarczająco dużo zrozumienia tego pliku, że jeśli go edytujesz, nie zrobisz nic złego.

Ponadto prawie na pewno będziesz chciał zablokować niektóre funkcje WordPressa poza tym, co Twój host pozwoli Ci skonfigurować automatycznie.

Prawdopodobnie są rzeczy, o których nawet nie wiesz, że możesz zrobić z wp-config.php ! Niektóre „Aha!” chwile, które należy przeżyć.

Ten artykuł jest przydatnym punktem odniesienia do konfiguracji niektórych wewnętrznych elementów WordPressa. Czytaj dalej, dodawaj do zakładek i udostępniaj znajomym i współpracownikom.

Podstawy

Powiedziałem, że to nie jest artykuł dla początkujących, ale powinniśmy ustalić podstawowe fakty, aby upewnić się, że jesteśmy w tym samym punkcie wyjścia.

Plik wp-config.php znajduje się w katalogu głównym instalacji WordPressa (może znajdować się w innych miejscach, ale do tego dojdziemy), ładuje się jako część inicjalizacji WordPressa i umożliwia konfigurację rdzenia WordPressa.

Jest to niezbędne do działania WordPressa. Przechowuje zestaw stałych, które pozwalają określić:

  • Połączenie z bazą danych i prefiks tabeli, których używa WordPress.
  • Informacje zabezpieczające, takie jak sole i klucze uwierzytelniania.
  • Ustawienia innych funkcji rdzenia WordPress, takich jak WP_CACHE i WP_DEBUG .
  • Ustawienia wtyczek, które mogą dodawać własne opcje do pliku.
  • Własne opcje konfiguracji.

Co najważniejsze, wp-config.php jest plikiem specyficznym dla środowiska. Jego zawartość może (i powinna!) być różna dla różnych witryn. Nawet lokalne, tymczasowe i aktualne kopie tej samej witryny będą miały w pliku różne wartości.

WordPress jest dostarczany z plikiem wp-config-sample.php , który zawiera minimum szczegółów potrzebnych do działania WordPressa. Możesz skopiować to do własnego wp-config.php w ramach instalacji, ale w dzisiejszych czasach zwykle robi się to za Ciebie.

Na koniec zwróć uwagę, że możliwe jest, że po otwarciu pliku wp-config.php z istniejącej witryny możesz zobaczyć stare stałe PHP dla starszych funkcji, takich jak domyślne uprawnienia do plików i poświadczenia FTP do uruchamiania aktualizacji. Nie będziemy ich tutaj omawiać, ponieważ jest mało prawdopodobne, że będziesz musiał ich użyć.

Przeglądanie stałych wp-config

Istnieje kilka sposobów na szybkie sprawdzenie wartości stałych WordPressa bez połączenia SSH ze zdalnym serwerem i otwierania pliku.

Funkcja kondycji witryny w rdzeniu WordPressa pozwala wyświetlić podstawowe wartości, przechodząc do menu Narzędzia -> Kondycja witryny -> Informacje -> Stałe WordPress. Stałe bazy danych można również zobaczyć w sekcji „Baza danych” na tej samej stronie.

Stałe bazy danych, pokazane tutaj w sekcji Baza danych na stronie Zdrowie witryny WordPress.

Wtyczka Query Monitor ma panel „Środowisko”, w którym można zobaczyć niektóre powszechnie używane stałe wp-config .

Panel „Środowisko” wtyczki Query Monitor, pokazujący niektóre powszechnie używane stałe wp-config.

WP-CLI, interfejs wiersza poleceń WordPress, ma polecenie wp config , którego można użyć do pobierania i ustawiania stałych w wp-config.php . Zwykle wymagałoby to najpierw SSH, ale jeśli skonfigurujesz aliasy w konfiguracji WP-CLI, możesz utworzyć szybki skrót do przeglądania i modyfikowania stałych w zdalnych plikach wp-config .

Podział procesu ładowania wp-config.php

Warto wiedzieć, kiedy ładuje się plik wp-config.php , ponieważ określa to niektóre rzeczy, które można z nim zrobić, a których nie. Dobrym ćwiczeniem jest prześledzenie procesu ładowania:

  • WordPress zaczyna się ładować z plikiem index.php . Wymaga to pliku wp-blog-header.php .

  • Prawie pierwszą rzeczą, którą robi wp-blog-header.php , jest ładowanie wp-load.php .

  • Następnie wp-load.php ustawia stałą ABSPATH (podstawowy katalog główny WordPressa) i inicjuje error_reporting() przed załadowaniem wp-config.php .

Ten proces ładowania, aw szczególności kod w wp-load.php , może nas nauczyć kilku interesujących rzeczy. Oto ten kod:

 /* * If wp-config.php exists in the WordPress root, or if it exists in the root and wp-settings.php * doesn't, load wp-config.php. The secondary check for wp-settings.php has the added benefit * of avoiding cases where the current directory is a nested installation, eg / is WordPress(a) * and /blog/ is WordPress(b). * * If neither set of conditions is true, initiate loading the setup process. */ if ( file_exists( ABSPATH . 'wp-config.php' ) ) { /** The config file resides in ABSPATH */ require_once ABSPATH . 'wp-config.php'; } elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) { /** The config file resides one level above ABSPATH but is not part of another installation */ require_once dirname( ABSPATH ) . '/wp-config.php'; } else { // A config file doesn't exist. // [Code here to load the setup screen for in-browser configuration] }

Co tu widzimy?

wp-config.php można przenieść w górę

Po pierwsze, komentarz mówi nam, że możemy umieścić wp-config.php w „korzeń WordPressa”. Nie wspomina o tym, że „root” może być w rzeczywistości katalogiem powyżej ABSPATH , w którym znajduje się wp-load.php .

Możemy zobaczyć to dodatkowe sprawdzenie w elseif , gdzie szuka dirname( ABSPATH ) . '/wp-config.php' dirname( ABSPATH ) . '/wp-config.php' . Dodatkowy warunek w elseif wyjaśniono w komentarzu.

Ekran konfiguracji ładuje się, jeśli nie ma pliku wp-config.php

Po drugie, widzimy, że jeśli plik konfiguracyjny nie istnieje, załaduje ekran konfiguracji.

Jest całkiem możliwe, że nigdy wcześniej nie widziałeś tego ekranu. Umożliwia wprowadzenie wstępnych informacji konfiguracyjnych, takich jak poświadczenia bazy danych, w internetowym interfejsie użytkownika:

Rzadko spotykany ekran konfiguracji WordPressa. WordPress ładuje to, jeśli nie znajdzie pliku konfiguracyjnego, umożliwiając ręczne ustawienie opcji konfiguracji.

To cecha WordPressa, o której warto wiedzieć. Jeśli kiedykolwiek umieściłeś podstawowe pliki WordPressa na publicznie dostępnym serwerze internetowym, ale nie utworzyłeś pliku wp-config.php , wtedy ktoś inny (lub, co bardziej prawdopodobne, bot) może przyjść i skonfigurować WordPressa po swojemu i ewentualnie narazić na szwank Twój hosting.

wp-config.php ładuje się bardzo wcześnie

Trzecią rzeczą, na którą należy zwrócić uwagę, jest to, że wp-config.php jest ładowany bardzo wcześnie w sekwencji startowej WordPressa. To znaczy że:

  1. Jest wiele rzeczy, których nie możemy zrobić w wp-config.php . Na przykład nie możemy tutaj dodać zaczepów (akcji lub filtrów), ponieważ funkcje i struktury danych do tego nie zostały jeszcze załadowane. I nie mamy dostępu do żadnych wewnętrznych funkcji, obiektów i interfejsów API WordPressa.

  2. Mamy dużą kontrolę nad tym, co dzieje się dalej. Ponieważ plik jest ładowany tak wcześnie, ma duży wpływ na WordPressa. To jest zarówno dobre, jak i złe. Możemy łatwo sprawić, że WordPress całkowicie zginie. Ale możemy również uzyskać dostęp do wszystkiego, co jest zdefiniowane w wp-config.php z praktycznie dowolnego miejsca w WordPress.

Nie zadzieraj z wp-config.php!

Ostatnią rzeczą, jakiej uczymy się z tego procesu, jest to, że z tą wielką mocą wiąże się wielka odpowiedzialność.

Na dole pliku wp-config.php znajdują się następujące wiersze:

 /* Add any custom values between this line and the "stop editing" line. */ /* That's all, stop editing! Happy publishing. */ /** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); } /** Sets up WordPress vars and included files. */ require_once ABSPATH . 'wp-settings.php';

Jest tu kilka instrukcji, ale linia „zatrzymaj edycję” jest ważna. Po tym wierszu następuje kontynuacja sekwencji inicjalizacji WordPressa. Dodanie nowego kodu w niewłaściwym miejscu prawdopodobnie spowoduje tylko, że nowy kod nie przyniesie żadnego efektu. Ale aby być bezpiecznym, polecam postępować zgodnie z tymi instrukcjami. Są tam nie bez powodu.

Sprawdzanie/linting pliku wp-config.php

Jeśli pracujesz w środowisku produkcyjnym, naprawdę nie chcesz umieszczać żadnych błędów w pliku wp-config.php . Błędy w tym miejscu mogą zepsuć Twoją witrynę i możesz nie wyświetlić przydatnego komunikatu o błędzie, gdy tak się stanie.

Możesz uruchomić php w wierszu poleceń z opcją -l („lint”), aby sprawdzić plik wp-config.php pod kątem krytycznych błędów składni PHP.

$ php -l wp-config.php

Błąd analizy: błąd składni, nieoczekiwany token „require_once” w wp-config.php w wierszu 9

Błędy parsowania wp-config.php

Możesz nawet napisać skrypt powłoki do…

  1. Skopiuj wp-config.php do pliku tymczasowego,
  2. Edytuj plik tymczasowy,
  3. Lintuj plik tymczasowy i
  4. Skopiuj go z powrotem tylko wtedy, gdy nie zawiera błędów składniowych.

Jeśli jesteś zadowolony z wiersza poleceń, bezpieczniej jest używać poleceń WP-CLI, takich jak wp config set <name> <value> do bezpiecznego ustawiania wartości, zamiast robić to ręcznie.

Możesz również wyświetlić swoje wartości konfiguracyjne za pomocą WP-CLI (jest to przykład z usuniętymi niektórymi wpisami - masz pomysł!):

Lista konfiguracji $wp
+---------------------+------------------------------------------ ---------+----------+
| nazwa | wartość | wpisz |
+---------------------+------------------------------------------ ---------+----------+
| katalog_główny | /Użytkownicy/kowale/witryny/snpp | zmienna |
| katalog_webroot | /Users/smithers/sites/snpp/public | zmienna |
| prefiks_tabeli | wp_ | zmienna |
| WP_HOME | https://snpp.test | stała |
| WP_SITEURL | https://snpp.test/ | stała |
| DB_NAME | snpp | stała |
| DB_USER | korzeń | stała |
| DB_HASŁO | Montgomery | stała |
| DB_HOST | 127.0.0.1 | stała |
| DB_CHARSET | utf8mb4 | stała |
| DB_COLLATE | | stała |
| DB_PREFIX | wp_ | stała |
| WP_DEBUG | 1 | stała |
| WP_DEBUG_LOG | 1 | stała |
| WP_DEBUG_DISPLAY | | stała |
| WP_ENVIRONMENT_TYPE | rozwój | stała |
| DISABLE_WP_CRON | | stała |
| DISALLOW_FILE_EDIT | 1 | stała |
+---------------------+------------------------------------------ ---------+----------+

Te dwie techniki mogą naprawdę oszczędzić ci trochę kłopotów i powstrzymać cię przed wpadaniem w panikę z powodu przypadkowego umieszczenia średnika w niewłaściwym miejscu w tak krytycznym pliku.

Zabezpieczanie WordPressa za pomocą wp-config.php

Bezpieczeństwo to stale gorący temat w WordPressie. Niektóre ustawienia, które możemy zmienić w pliku wp-config , umieszczają więcej narzędzi w naszym zestawie narzędzi bezpieczeństwa.

Te części pliku wp-config to zdecydowanie nie jedyne rzeczy, których powinieneś używać, aby osiągnąć dobre bezpieczeństwo WordPress. Upewnij się, że dokładnie rozumiesz bezpieczeństwo witryny, a także informacje zawarte w następnej sekcji.

Ochrona wp-config.php przed odwiedzającymi witrynę

Twój plik wp-config domyślnie znajduje się w katalogu głównym Twojej witryny i po prostu zawiera krytyczne informacje, takie jak dane logowania do bazy danych i sole haseł. Nie chcesz, aby te informacje były publicznie dostępne, więc upewnij się, że plik wp-config jest chroniony przed odwiedzającymi witrynę.

Twoja firma hostingowa często robi to za Ciebie. Możesz to sprawdzić, próbując uzyskać dostęp do pliku z przeglądarki, dodając /wp-config.php zaraz po swojej domenie. Ten adres URL może być inny, jeśli plik został przeniesiony.

Jeśli umieściłeś plik wp-config w katalogu powyżej katalogu głównego witryny, nie powinieneś go widzieć. W większości innych przypadków po prostu otrzymasz komunikat o błędzie PHP podczas próby odwiedzenia pliku, więc zwykle nie ma tu nic do zrobienia. Ale jeśli chcesz go odpowiednio zabezpieczyć, możesz to zrobić, modyfikując konfigurację serwera WWW (Apache lub nginx), aby zablokować do niego dostęp.

Wreszcie, jeśli przechowujesz plik swojej witryny w Git, ważne jest, aby nie przechowywać pliku wp-config w repozytorium Git. Może to spowodować ujawnienie krytycznych informacji o Twojej witrynie, ale dodatkowo prawdopodobnie i tak chcesz mieć inną wersję tego pliku w każdym środowisku. Dlatego lepiej jest dodać go do swojego .gitignore i ręcznie zarządzać plikami w każdym środowisku.

Obrotowe klucze/sole

Czym są klucze/sole?

Sekcja kluczy i soli to jedna z bardziej tajemniczych części wp-config . Ten zestaw dziwnie wyglądających stałych pomaga w szyfrowaniu takich rzeczy, jak pliki cookie i nonces. Bez wchodzenia w szczegóły - tak jak WP Engine - dodają dodatkową warstwę losowości, która utrudnia odszyfrowanie, jeśli nie znasz soli i kluczy.

Po co „obracać” klucze/sole?

Po pierwsze, „obróć” to tylko wymyślne słowo oznaczające „zmianę”. Nie wiem, dlaczego używamy „obróć”. To nie tak, że kiedykolwiek wracamy do tego samego zestawu kluczy!

Prawdopodobnie powinieneś zmienić swoje klucze i sole, jeśli witryna została zhakowana, ponieważ nie możesz zagwarantować, że klucze i sole są nadal tajne. Ale i tak możesz chcieć je regularnie rotować, tak jak w przypadku haseł, aby mieć pewność, że nikt nie wie, czym one są.

Problem z obracaniem kluczy/solami

Zmiana kluczy i soli nie jest bezbolesna. Każdy, kto ma zestaw ciasteczek, straci go. Więc każdy zalogowany zostanie wyładowany, a każdy, kto ma koszyk WooCommerce, będzie go opróżniał.

Jak obracać klucze/sole?

Mam na myśli, że możesz edytować plik wp-config i po prostu wpisać kilka nowych losowych znaków nad starymi. Ale byłoby to nudne, a ludzie nie są zbyt dobrzy w losowości.

Pozwól, że opowiem ci o kilku sposobach ustawiania nowych kluczy/soli w twoim wp-config .

  1. Ręczne dodawanie kluczy z generatora: Możesz użyć generatora wordpress.org, aby uzyskać potrzebny kod. Po prostu skopiuj i wklej go do pliku wp-config w miejsce starych wartości.
  2. Użyj wtyczki: wiele wtyczek bezpieczeństwa, takich jak Sucuri Security, iThemes Security i Malcare, ma tę funkcję. A Salt Shaker to dedykowana wtyczka, która zautomatyzuje ten proces zgodnie z harmonogramem.
  3. Użyj WP-CLI. Czy powiedzieliśmy już, jak niesamowity jest WP-CLI? Zrobiliśmy? OK. Cóż, powtarzamy to ponownie! I możesz użyć polecenia wp config shuffle-salts aby wykonać tę pracę w kilka sekund.

Przenoszenie i ukrywanie rzeczy

Osoby zajmujące się bezpieczeństwem powiedzą Ci, że „bezpieczeństwo przez ukrywanie” wcale nie jest zabezpieczeniem, ale niektórzy ludzie nadal lubią ukrywać swoje WordPress rzeczy, aby postawić dodatkowe bariery dla hakerów.

Plik wp-config daje ci wiele opcji do zrobienia tego, a omówimy je w dalszych sekcjach dotyczących przenoszenia rzeczy i wyłączania edycji plików.

Wyłączanie edytorów plików

WordPress ma przydatną funkcję, która pozwala edytować pliki w motywach i wtyczkach z poziomu pulpitu administracyjnego. Edycja wp-config.php pozwala wyłączyć te edytory plików! Niektórzy ludzie lubią je wyłączać dla spokoju ducha.

Teraz wiem, że istnieje argument dotyczący bezpieczeństwa, że ​​jeśli ktoś ma dostęp administratora do Twojej witryny — co jest potrzebne do korzystania z tych edytorów — to może przesłać wtyczkę i robić, co mu się podoba. Włączenie tych edytorów nie zapewnia hakerom większej mocy niż dotychczas.

Jednak, chociaż ich wyłączenie może nie poprawić bezpieczeństwa, prawdziwym powodem, aby to zrobić, jest powstrzymanie osób, które są faktycznie upoważnione jako administratorzy, przed ich używaniem. Jeśli jesteś agencją, prawdopodobnie nie chcesz, aby Twoi klienci odkryli, że mogą edytować wszystkie ich pliki motywów, prawda?

Wiele hostów po prostu domyślnie wyłącza tę funkcję. Ale jeśli chcesz, aby zniknęły, wystarczy dodać:

 define( 'DISALLOW_FILE_EDIT', true );

Lub jeśli naprawdę chcesz zablokować swój system plików, istnieje DISALLOW_FILE_MODS , który omówimy w następnej sekcji.

Wyłączanie automatycznych aktualizacji

Niezależnie od tego, czy je kochasz, czy nienawidzisz, automatyczne aktualizacje WordPressa wywarły pozytywny wpływ na ekosystem WordPressa i trudno je zignorować. Ale nie każdy chce, żeby ich oprogramowanie dbało o siebie!

Tak więc wp-config zapewnia kontrolę nad procesem automatycznych aktualizacji za pomocą prostego zestawu oczywistych stałych, które można ustawić:

 # Disable all core updates: define( 'WP_AUTO_UPDATE_CORE', false ); # Enable all core updates, including minor and major: define( 'WP_AUTO_UPDATE_CORE', true ); # Enable core updates for minor releases (default): define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Jeśli chcesz czegoś bardziej ekstremalnego, możesz DISALLOW_FILE_MODS :

 define( 'DISALLOW_FILE_MODS', true );

Ale to uniemożliwia WordPressowi zapisywanie na dysku wszystkiego , co dotyczy rdzenia, motywów, wtyczek lub tłumaczeń, a także wyłącza powiadomienia e-mail o drobnych aktualizacjach. Został opisany przez głównego współpracownika jako „szalony głupi w użyciu, chyba że dokładnie wiesz, co robisz”.

Nieco mniej ekstremalne jest AUTOMATIC_UPDATER_DISABLED . Pozwala to instalować wtyczki i motywy, ale nie aktualizuje ich ani podstawowego oprogramowania. Wyłącza również aktualizacje tłumaczeń.

 define( 'AUTOMATIC_UPDATER_DISABLED', true );

Na wordpress.org znajduje się szczegółowy przewodnik na ten temat, w tym kilka innych opcji, takich jak używanie filtrów dla bardziej precyzyjnej kontroli.

Na koniec zauważam, że jeśli Twoja witryna jest kontrolowana pod kątem wersji, prawdopodobnie WordPress i tak wyłączył aktualizacje. Na przykład obecność katalogu .git w katalogu głównym witryny (lub różnych innych plików w różnych miejscach) spowoduje wyłączenie automatycznych aktualizacji bez konieczności dodawania czegokolwiek do wp-config .

Konfiguracja HTTPS

Konfiguracja HTTPS często była trudna. Wraz z pojawieniem się darmowych, zaufanych certyfikatów bezpieczeństwa z miejsc takich jak LetsEncrypt i Cloudflare, wielu hostów skonfiguruje to za pomocą kilku kliknięć. To ustawienie należy prawdopodobnie uznać za dziedzictwo, ale być może nadal potrzebujesz go do czegoś.

Stała FORCE_SSL_ADMIN mówi WordPressowi, aby zawsze używał SSL dla stron logowania i pulpitu WordPress. Gwarantuje to, że bezpieczne dane uwierzytelniające i pliki cookie nie mogą być wysyłane w postaci niezaszyfrowanej.

Ale, jak powiedziałem, dobra firma hostingowa i tak sprawi, że konfiguracja HTTPS w Twojej witrynie będzie prosta, więc po prostu to zrób.

Zapobieganie zewnętrznym żądaniom HTTP

Wreszcie w bezpieczeństwie możesz blokować zewnętrzne żądania HTTP. Oznacza to, że WordPress nie może kontaktować się z innymi miejscami w Internecie, aby wykonywać takie czynności, jak wykonywanie wywołań API lub pobieranie aktualizacji.

Zezwolenie WordPressowi na kontaktowanie się z usługami zewnętrznymi przez HTTP jest ogólnie dobrym pomysłem, ponieważ pozwala na pobieranie aktualizacji, instalowanie wtyczek i motywów, a wiele wtyczek zepsuje się, jeśli wyłączysz żądania HTTP.

Jednak rdzeń WordPressa oraz wiele wtyczek i motywów wysyła „telemetrię” lub „dane użytkowania” z powrotem do centralnych serwerów. To może być dobre – pomaga twórcom wtyczek i motywów wiedzieć, kto i w jaki sposób korzysta z ich oprogramowania. Ale jeśli masz witrynę, która zawiera szczególnie wrażliwe dane, możesz to wyłączyć. Możesz to zrobić za pomocą:

 define( 'WP_HTTP_BLOCK_EXTERNAL', true );

Jeśli chcesz mieć listę dozwolonych hostów, z którymi można się skontaktować, możesz to również zrobić:

 define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' );

Pamiętaj, że lista dostępnych hostów jest listą oddzieloną przecinkami, a subdomeny z symbolami wieloznacznymi są dozwolone. I możesz monitorować, z jakimi hostami się kontaktujesz za pomocą wtyczki Log HTTP Requests.

Przenoszenie rzeczy

Nie każda instalacja WordPressa jest taka sama. Niektóre hosty lub frameworki lubią przenosić katalogi ze względów bezpieczeństwa lub oddzielić kod i zasoby specyficzne dla witryny od rdzenia WordPress. Mój artykuł na temat używania Git i Composera do zarządzania WordPressem opisuje niektóre zalety tego podejścia.

Jakie więc opcje daje WordPress – z braku lepszego określenia – „przenoszenie rzeczy”?

Zmiana prefiksu bazy danych

WordPress domyślnie używa prefiksu nazwy tabeli bazy danych wp_ . Ten prefiks jest dodawany do wszystkich nazw tabel bazy danych i jest używany również w innych miejscach, na przykład opcja <prefix>user_roles w tabeli opcji oraz wpisy meta użytkownika <prefix>capabilities .

Hakerzy lub osoby atakujące mogą użyć domyślnego prefiksu w ataku, próbując wykryć lub zmodyfikować tabele bazy danych. Więc niektórzy zalecają zmianę z domyślnego.

Opcja wp_config $table_prefix pozwala to zrobić i prawdopodobnie powinieneś ustawić go na jakiś krótki, ale losowy ciąg, z sufiksem podkreślenia:

 $table_prefix = 'b4F8az_';

To powie WordPressowi, aby używał nazw tabel, takich jak b4F8az_posts zamiast wp_posts .

Nie powinieneś aktualizować żadnego kodu, aby uwzględnić tę zmianę (chyba że kod jest bardzo źle napisany), ale jeśli zmieniasz to w istniejącej witrynie, będziesz musiał dokonać pewnych aktualizacji w swojej bazie danych – a nie tylko zmienić nazwę stoły!

Niektóre wtyczki bezpieczeństwa zrobią to za Ciebie i istnieje wtyczka, która również może to zrobić. Zdecydowanie zalecamy wykonanie kopii zapasowej bazy danych przed wykonaniem tej czynności i pamiętaj, że wybór innego niż domyślny prefiks tabeli najlepiej jest wykonać podczas instalacji WordPressa, a nie podczas zmiany go, gdy witryna jest w trakcie działania.

Ciekawą uwagą na ten temat jest to, że $table_prefix jest zmienną, a nie stałą. Jest to jedyna zmienna zdefiniowana w przykładowym pliku konfiguracyjnym, który daje Ci WordPress! A jeśli nadal jesteś ciekawy: tak, polecenia wp config WP-CLI zajmą się tym bez Twojej wiedzy!

Przenoszenie tabel użytkownika i Usermeta

Nigdy nie widziałem tego, a dowiedziałem się, że można to zrobić, pisząc ten artykuł, ale możesz też całkowicie zmienić nazwy tabel użytkowników i usermeta.

Sądzę, że pomaga to zapobiec atakowi polegającemu na wstrzykiwaniu SQL, który próbuje „SELECT * FROM wp_usermeta;”, ale cieszę się, że słyszę inne powody, aby to zrobić.

W każdym razie stałe CUSTOM_USER_TABLE i CUSTOM_USER_META_TABLE są tym, czego potrzebujesz:

 define( 'CUSTOM_USER_TABLE', $table_prefix.'my_users' ); define( 'CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta' );

Istnieją pewne zastrzeżenia, o których warto wiedzieć przed użyciem tych stałych. Sprawdź oficjalne dokumenty przed użyciem tej funkcji. Podobnie jak w przypadku niestandardowego prefiksu tabeli, zdecydowanie najlepiej jest to zrobić podczas instalowania nowej witryny, zamiast modyfikowania jej później.

Przenieś zawartość, przesłane i katalogi wtyczek

Możliwe jest również przeniesienie całego katalogu wp-content , katalogu uploads oraz katalogów themes i plugins . Rzeczy do zapamiętania:

  • W niektórych przypadkach musisz ustawić adres URL oraz katalog.
  • Należy uważać, aby używać pełnych ścieżek lub ścieżek względnych.
  • Żadne z tych ustawień nie powinno mieć końcowego ukośnika.

Szczegóły znajdziesz w oficjalnej dokumentacji – nie będę tego wszystkiego tutaj powtarzał.

Na koniec zwróć uwagę, że źle zakodowana wtyczka lub motyw może zepsuć się, jeśli je zmienisz. To nigdy nie powinno się zdarzyć, ale warto o tym wiedzieć.

Jeśli jesteś programistą wtyczek lub motywów, pamiętaj, że te ścieżki mogą się zmieniać. Upewnij się więc, że nie stosujesz twardych ścieżek kodu do katalogów lub adresów URL. Przydatne dla Ciebie funkcje to:

wp_upload_dir
plugins_url
plugin_dir_url
plugin_dir_path
get_stylesheet_directory
get_stylesheet_directory_uri
get_template_directory – zauważ, że dla motywu potomnego zwraca lokalizację motywu nadrzędnego
get_template_directory_uri

W podręczniku programisty WordPressa znajduje się bardziej wyczerpująca lista takich funkcji.

Na koniec, oprócz przenoszenia plików w obrębie instalacji WordPressa, możesz również przenieść swoją lokalizację wp-admin lub zmienić lokalizację swojej witryny. W tym również może pomóc wp-config.php .

Ustawienia dotyczące treści

WordPress to przecież system zarządzania treścią. Można więc oczekiwać niektórych stałych, których można użyć w wp-config.php do kontrolowania opcji zawartości. Zobaczmy i zobaczmy, co możemy zrobić.

Zmień adresy URL witryny i pulpitu nawigacyjnego

To zawsze mnie myliło.

Aby ustawić adres URL swojej witryny, musisz użyć stałej WP_HOME , a nie stałej WP_SITEURL .

Stała WP_SITEURL nie zmienia adresu URL Twojej witryny.

Zdezorientowany?

Oficjalny opis tego, co robi WP_SITEURL , to „adres, pod którym znajdują się twoje podstawowe pliki WordPress”. Jest to również mylące, ponieważ jest to adres URL, a nie katalog.

Nie obwiniaj mnie za to, jestem tylko twoim przewodnikiem na cały dzień!

Ustawienie WP_HOME i WP_SITEURL zastępuje wpisy home i siteurl w tabeli bazy danych wp_options . Więc to przynajmniej ma sens.

 // NOTE: These must not have trailing slashes define( 'WP_HOME', 'https://helfish.media' ); define( 'WP_SITEURL', 'https://hellfish.media/wordpress` );

Możesz użyć tych stałych po przeniesieniu witryny pod nowy adres URL, aby uruchomić witrynę i jednocześnie poprawnie naprawić bazę danych. Możesz nawet zdecydować się na pozostawienie ich na miejscu.

Ustawienie WP_SITEURL może być również użyte, gdy przeniosłeś swoje podstawowe pliki WordPress do innego katalogu.

Użycie ich zapobiega również uruchomieniu jednego lub dwóch zapytań do bazy danych w celu pobrania wartości z tabeli opcji, co może spowodować marginalny wzrost wydajności. Chociaż jeśli robisz buforowanie obiektów, ten zysk jest prawdopodobnie znikomy.

W oficjalnych dokumentach jest więcej szczegółów, a nawet pełny artykuł pomocy dotyczący zmiany adresu URL witryny. Ponadto ten artykuł zawiera niejasną stałą RELOCATE dla wp-config.php , o której nigdy nie słyszałem przed zbadaniem tego artykułu.

Na koniec przy przenoszeniu witryn pamiętaj, że nie jest to jedyna rzecz, którą musisz zmienić. Zalecane jest pełne wyszukiwanie i zastępowanie w bazie danych ciągów adresów URL.

Ustawienia postu

Istnieje kilka różnych ustawień, które możesz modyfikować, jeśli chodzi o posty. Większość z nich dotyczy albo publikowania wersji, albo funkcji automatycznego zapisywania.

Po zmianach

Domyślnym zachowaniem WordPressa jest zapisywanie wszystkich poprawek wprowadzonych do postów i stron. Zaletą tego jest łatwość powrotu do poprzednich wersji. Wadą jest to, że wszystkie te wersje zajmują miejsce w bazie danych i mogą wpływać na wydajność witryny, spowalniając zapytania do bazy danych.

Możliwe jest całkowite wyłączenie publikowania wersji, modyfikując wartość WP_POST_REVISIONS w pliku wp-config.php . Wartość domyślna to prawda. Aby wyłączyć wersje, możesz zamiast tego ustawić wartość false:

 define( 'WP_POST_REVISIONS', false );:

Niektóre hosty, w tym WP Engine, domyślnie wyłączają wersje publikowania. Zalecam skontaktowanie się z dostawcą usług hostingowych przed wprowadzeniem jakichkolwiek zmian. Różni się to w zależności od hosta, ale jeśli korzystasz z WP Engine, nie możesz włączyć wersji za pomocą wp-config , ponieważ zostanie on nadpisany na poziomie serwera.

Jeśli twój host kontroluje to i spróbujesz to zmienić, niekoniecznie coś zepsujesz, ale możesz marnować swój czas.

Jeśli obawiasz się , że publikowanie wersji spowalnia zapytania do bazy danych, lepszym rozwiązaniem może być ograniczenie liczby wersji przechowywanych przez WordPress. Jest to kontrolowane przez stałą WP_POST_REVISIONS , którą możesz ustawić na maksymalną liczbę wersji, które chcesz zachować:

 define( 'WP_POST_REVISIONS', 5 );

Zmiana interwału autozapisu

Możesz także zmniejszyć częstotliwość uruchamiania autozapisu. To domyślnie co 60 sekund, ale możesz to zmienić na dowolne. Jeśli masz paranoję, możesz zamiast tego ustawić to na 20 lub 30 sekund.

Należy pamiętać, jak długo trwa autozapis. Nie chcesz, aby nakładały się na siebie, powodując, że zdarzają się zbyt często, więc nie ustawiaj tej wartości na przykład na jedną sekundę. Jest mało prawdopodobne, że automatyczne zapisywanie zajmie więcej niż domyślne 60 sekund, ale możesz zwiększyć interwał, jeśli chcesz zapisywać żądania:

 define( 'AUTOSAVE_INTERVAL', 120 ); // Seconds

Zawijanie

W wp-config jest duży potencjał, który tylko czeka na odblokowanie. Mam nadzieję, że ta trasa pomogła uwypuklić tylko niektóre z możliwości. W przyszłym artykule przyjrzę się bardziej zaawansowanym możliwościom związanym z wp-config , w tym instalacjom wielostanowiskowym i debugowaniu. Zajmę się również wydajnością, w tym sposobami dostosowania limitów pamięci, problemów z CRON i typów środowisk.

Bez wątpienia w oficjalnej dokumentacji czają się inne skarby, które czekają na odkrycie. Jakie wskazówki znalazłeś dotyczące korzystania z wp-config ? Daj znać w komentarzach.