3. Jest jednym z najważniejszych plików konfiguracji WordPress.
Znajduje się w katalogu głównym, plików WordPress.
!3
Podczas pobrania WordPress nie jest dołączany
Zawiera podstawowe dane konfiguracyjne witryny, takie jak
informacje o połączeniu z bazą danych i inne - o tym później.
5. Podczas procesu instalacji WordPress tworzy plik wp-config.php na
podstawie podanych informacji.
- I -
Można go utworzyć ręcznie korzystając z przykładowego plik
wp-config-sample.php
i edytując go zgodnie z wymogami.
- II -
!5
15. !15!15
- I -
Najlepiej na środowisku testowym, localhost - odradzamy
produkcję
- II -
Na wszelki wpadek dobrze jest mieć kopię zapasową
- III -
Bez obawy zmiany są odwracalne, wystarczy zmienić
plik .php i zapisać zmiany
18. !18
MySQL settings - dane do połączenia z bazą danych
define('DB_HOST', 'localhost');
define('DB_HOST', ’127.0.0.1:3307');
define('DB_HOST', ’localhost:3307');
define('DB_HOST', ’mysql.serwer.com:3307’);
If your host uses Unix sockets or pipes, adjust the DB_HOST
define('DB_HOST', '127.0.0.1:/var/run/mysqld/mysqld.sock');
define('DB_HOST', 'localhost:/var/run/mysqld/mysqld.sock');
define('DB_HOST', 'mysql.serwer.com:/var/run/mysqld/mysqld.sock’);
Możemy podać w inny sposób
20. !20
Stałe związane z standardem kodowania i metodą porównywania znaków.
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', ’ ’);
Sortowanie odnosi się do kolejności sortowania liter, cyfr i symboli danego zestawu znaków.
WordPress domyślnie używa zestawu znaków UTF-8 (utf8), a gdy tabele bazy danych MySQL
WordPress są tworzone podczas procesu instalacji, MySQL przypisuje do tych tabel
utf8_general_ci sortowanie.
Możemy zmienić np.
define('DB_COLLATE', 'utf8_turkish_ci');
22. !22
- III -
Można go zmienić, trzeba pamiętać że zmian również należy
dokonać w bazie danych.
- II -
Jeśli używamy różnych prefiksów to możemy w jednej bazie mieć
tabele z 2 lub więcej różnych instalacji WordPress. Nie zalecane ze
względów bezpieczeństwa.
- I -
Domyślnie jest ’wp_’, zalecana zmiana ze względów
bezpieczeństwa.
- IV -
Możemy używać nastepujących znaków: liczby, litery i ‚ _ ’
23. !23
Zmiana nazwy w tabeli użytkowników i opisu użytkowników
define('CUSTOM_USER_TABLE', $table_prefix. 'my_users');
define('CUSTOM_USER_META_TABLE', $table_prefix. 'my_usermeta');
Może poprawić bezpieczeństwo
robimy kopiując tabele w bazie, konsola sql np.
CREATE TABLE tabela_2 LIKE tabela_1;
INSERT INTO tabela_2 SELECT * FROM tabela_1;
26. !26
- I -
Klucze które zabezpieczają dane przechowywane
ciasteczkach.
- II -
Zmiana któregokolwiek klucza spowoduje wylogowanie
wszystkich zalogowanych użytkowników.
- III -
4 pierwsze klucze są wymagane.
- IV -
Tu możesz wygenerować nowe klucze:
https://api.wordpress.org/secret-key/1.1/salt/
28. !28
Używamy go na stronach testowych, wersjach dev.
Na produkcji powinna być ustawiona wartość ma false
define('WP_DEBUG', true);
29. !29
Można też włączyć tryb debagowania bez wyświetlania błędów. Aby miało to sens
zapisujemy błędy do pliku debug.log, który jest umieszczony w folderze /wp-content/
Ustawienia php muszą pozwalać na wyświetlanie błędów - można to zrobić w pliku
php.ini
define('WP_DEBUG', true);
define(’WP_DEBUG_DISPLAY’, false);
define(’WP_DEBUG_LOG’, true);
Plik debug.log warto nadać upewnienia 600 tylko do odczytu i zablokować do niego
dostęp z zewnątrz poprzez plik .htaccess
<Files debug.log>
Order allow,deny
Deny from all
</Files>
30. !30
SCRIPT_DEBUG jest stałą pokrewną, która zmusi WordPress do używania
wersji "dev" niektórych podstawowych plików CSS i JavaScript zamiast
zminiaturyzowanych wersji, które normalnie są ładowane. Jest to
przydatne, gdy testujesz modyfikacje wszystkich wbudowanych plików .js
lub .css.
define(’SCRIPT_DEBUG’, true);
Niektóre skrypty nie honorują SCRIPT_DEBUG. Domyślna wartość to fałsz.
31. !31
SAVEQUERIES zapisuje zapytania do bazy danych do tablicy. Tablica może być
wyświetlana, aby pomóc w analizowaniu tych zapytań.
Stała zdefiniowana jako true powoduje, że każde zapytanie zostanie zapisane, jak długo
trwało wykonywanie tego zapytania i jaka funkcja je wywołała.
define('SAVEQUERIES', true);
Tablica jest przechowywana w globalnych zapytaniach $wpdb->queries.
UWAGA: będzie to miało wpływ na wydajność witryny, więc pamiętaj, aby wyłączyć tę
opcję, gdy nie debugujesz.
Np. w pliku footer.php umieszczamy kod
<?php
if ( current_user_can( 'administrator' ) ) {
global $wpdb;
echo "<pre>";
print_r( $wpdb->queries );
echo "</pre>";
}
?>
32. !32
Przykładowe ustawienie do debagowania
// Enable WP_DEBUG mode
define('WP_DEBUG', true);
// Enable Debug logging to the /wp-content/debug.log file
define('WP_DEBUG_LOG', true);
// Disable display of errors and warnings
define('WP_DEBUG_DISPLAY', false);
@ini_set( 'display_errors', 0 );
// Use dev versions of core JS and CSS files (only needed if you are
modifying these core files)
define('SCRIPT_DEBUG', true);
33. !33
Pamiętaj, że przedstawione zmiany powinny być w pliku
wp-config.php przed linią z komentarzem:
/* That's all, stop editing! Happy blogging. */
Debagowanie także możemy zrobić używając pluginów np:
Query Monitor, Debug Bar, Log Deprecated Notices
37. !37
Kontrola nad mechanizmem automatycznych aktualizacji
define('AUTOMATIC_UPDATER_DISABLED', true);
Możemy wyłączyć całkowicie - ustawienie true, domyślnie jest false
define('WP_AUTO_UPDATE_CORE', true);
Ta stała określa czy aktualizacja WordPress mają być włączone dla wszystkich wersji true
(wartość domyślna dla development site), wyłączone false
lub włączone w ramach wersji głównej minor - wartość domyślna
38. !38
Wyłączenie możliwość instalacji wtyczek i motywów
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
Blokuje możliwość instalacji wtyczek i motywów oraz
edycji plików motywów i wtyczek po zalogowaniu się do kokpitu WordPress.
Nie trzeba ustawiać razem DISALLOW_FILE_MODS i DISALLOW_FILE_EDIT
obie będą działały tak samo
41. !41
- II -
Pozwala zdefiniować adres jaki wpisujemy w przeglądarce
- I -
Pozwala zdefiniować adres gdzie znajdują się pliki
główne, w tym przypadku jest to katalog „wordpress”
- III -
Przesłania to wartości podane w tabeli ale ich nie nadpisuje
- IV -
Na początku dajemy http lub https, nie podajmy na końcu „/”
42. !42
Adres strony URL - opcjonalnie
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/wordpress');
define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/path/to/wordpress');
define('WP_SITEURL', 'http://'.$_SERVER['SERVER_NAME'].'/wordpress');
define('WP_HOME', 'http://'.$_SERVER['SERVER_NAME']);
Można to ustawić dynamicznie:
1. w oparciu o php wartość nagłówka HTTP_HOST
2. gdy apache jest skonfigurowany jako UseCanonicalName wartość „on”.
SERVER_NAME jest ustawiony przez konfigurację serwera
44. !44
Zmiany możemy wprowadzać dla nastepujących katalogów / folderów:
wp-content - zawiera: motywy, wtyczki, pliki użytkownika. Stałe do
zdefiniowania:
WP_CONTENT_DIR (nazwa katalogu na serwerze) i WP_CONTENT_URL (adres
URL katalogu)
plugins - zawiera: wtyczki. Stałe do zdefiniowania: WP_PLUGIN_DIR,
i WP_PLUGIN_URL,
mu-plugins - zawiera: wtyczki „must-use”, takie których nie można zdezaktywować.
Stałe do zdefiniowania: WPMU_PLUGIN_DIR, i WPMU_PLUGIN_URL
uploads - tu trafiają pliki użytkownika przesłane do biblioteki mediów, także te
zapisywane przez wtyczki
Stałe do zdefiniowania: UPLOADS
46. !46
- I -
Nie możemy przenieść katalogu/folderu themes (motywy)
- II -
Możemy zdefiniować nowy katalog / folder w którym będziemy
umieszczać nasze motywy / motywy potomne
- III -
szczegóły: https://codex.wordpress.org/register_theme_directory
48. !48
define('AUTOSAVE_INTERVAL', 160); // Seconds
Podczas edytowania posta WordPress używa Ajax do
automatycznego zapisywania poprawek do wpisu
podczas edycji. Możesz zwiększyć to ustawienie, aby
uzyskać dłuższe opóźnienia pomiędzy
automatycznymi zapisami lub zmniejszyć ustawienie,
aby upewnić się, że nigdy nie stracisz zmian.
Wartość domyślna to 60 sekund.
50. !50
define('WP_POST_REVISIONS', false);
// całkowicie wyłączamy wersjonowanie
define('WP_POST_REVISIONS', 3);
// przechowujemy tylko 3 ostatnie wersje wpisu
WordPress domyślnie zapisuje kopie każdej edycji dokonanej w poście
lub stronie, umożliwiając przywrócenie poprzedniej wersji tego postu
lub strony. Zapisywanie wersji może zostać wyłączone lub można
określić maksymalną liczbę wersji dla jednego postu lub strony.
54. !54
define('NOBLOGREDIRECT', ’http://testowa.pl');
Przekieruj nieistniejące „blog…”
NOBLOGREDIRECT może być użyty do przekierowania przeglądarki, jeśli
użytkownik próbuje uzyskać dostęp do nieistniejącej witryny przy użyciu
subdomeny lub podfolderu.
Np. Http://nonexistent.testowa.pl lub http://testowa.pl/nonexistent/.
56. !56
define('DISALLOW_UNFILTERED_HTML', true);
Użytkownicy z rolami administratora lub edytora mogą
publikować niefiltrowany kod HTML w postach i komentarzach.
W WordPress Multisite tylko Super Admin może opublikować
niefiltrowany HTML, ponieważ wszyscy inni użytkownicy są
uznawani za niezaufanych.
Aby wyłączyć niefiltrowany kod HTML dla wszystkich
użytkowników, w tym dla administratorów, możesz dodać
powyższą stałą.
58. !58
define('EMPTY_TRASH_DAYS', 30);
// wpisy będą usuwane z kosza po 30 dniach
Ustawienie tej zmiennej na 0 lub false nie spowoduje braku
usuwania wpisów.
Aby zablokować usuwanie wpisów należy podać możliwie długi
czas na np 10 950 to ok 30 lat.
62. !62
define('IMAGE_EDIT_OVERWRITE', true);
Domyślnie WordPress tworzy nowy zestaw obrazów za każdym
razem, gdy edytujesz obraz, a po przywróceniu oryginału pozostawia
wszystkie modyfikacje na serwerze.
Definiowanie IMAGE_EDIT_OVERWRITE jako true zmienia to
zachowanie. Tylko jeden zestaw zmian obrazu zostanie utworzony, a
po przywróceniu oryginału zmiany zostaną usunięte z serwera.
64. !64
Zmiana limitu pamięci dla PHP
define('WP_MEMORY_LIMIT', '64M');
// ustawiamy limit pamięci na 64 MB
Domyślna wartość 64MB. Zmiana jest możliwa jeśli hosting na to pozwala.
define('WP_MAX_MEMORY_LIMIT', ’128M’);
//ustawiamy limit pamięci dla panelu na 128 MB
Osobny limit pamięci dla panelu admina
68. !68
define('WP_ALLOW_REPAIR', true);
WordPress posiada wbudowane narzędzie do sprawdzania i naprawy
uszkodzonych tabel. Domyślnie jest wyłączone.
Wykona ono sprawdzenie tabel w bazie danych (CHECK), naprawę tych,
które zostały rozpoznane jako uszkodzone (REPAIR) oraz analizę
(ANALYZE) i optymalizację (OPTIMIZE) wszystkich tabel.
Narzędzie możemy uruchomić wpisując w przeglądarce adres
http://testowa.pl/wp-admin/maint/repair.php.
69. !69
WP Cron & Cron timeout
Zastosowanie crona np. publikowanie zaplanowanych
wpisów, uruchamianie cykliczne skryptów.
70. !70
define('DISABLE_WP_CRON', true);
define('WP_CRON_LOCK_TIMEOUT', 60);
Pierwsza linia wyłącza crona WordPress
Druga określa jak często mogą być uruchomiane
procesy, czas w sekundach
Uwaga ! Działanie crona jest uzależnione od ruchu na
stronie. Jeśli nie ma ruchu na stronie a chcemy
korzystać z funkcjonalności crona to lepiej używać
systemowego corn’a serwera
72. !72
define('FORCE_SSL_ADMIN', true);
Jeśli używamy ssl (https), to nie musimy tego ustawiać.
Jeśli strona nie ma ssl, a chcemy wymusić połączenie szyfrowane
np używając samodzielnie podpisanego certyfikatu to ustawiamy
wartość na true
74. !74
// sposób podawania.
define ('FS_CHMOD_DIR', (0755 & ~ umask ()));
define ('FS_CHMOD_FILE', (0644 i ~ umask ()));
FS_CHMOD_DIR - Stała definiuje uprawnienia do katalogów (domyślnie (0755))
FS_CHMOD_FILE - Stała definiuje uprawnienia do plików (domyślnie (0644))
FS_CONNECT_TIMEOUT - Stała definiuje limit czasu dla budowania połączenia
(domyślnie 30 sekund)
FS_METHOD - Stała definiuje sposób łączenia z systemem plików (Wartości: direct |
ssh | ftpext | ftpsockets)
FS_TIMEOUT - Stała definiuje limit czasu po utracie połączenia (domyślnie 30 sekund)
FTP_SSH Stała definiuje aktywowanie lub nie SSH (Wartości: true | false)
FTP_USER Stała definiuje użytkownika FTP
76. - I -
Zablokować dostęp do pliku poprzez .htaccess
<files wp-config.php>
order allow,deny
deny from all
</files>
77. - II -
Zmienić uprawnienia do plików
Domyślnie uprawnienia dla WordPress są
Foldery – 775
Pliki – 644
Warto zmienić na dla plików:
wp-config.php oraz .htaccess – 444 lub 400
(w zależności od dostępnych uprawnień na serwerze)
78. - III -
Przenieść cześć newralgicznych danych do innego pliku
define(’DB_NAME’, ’name db’);
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost');
define('DB_CHARSET', ’utf8mb4');
define('DB_COLLATE', ’ ’);
db-conf.php
/** dołączanie pliki. */
require_once ( ’db-conf.php' );
/** Absolutna ścieżka do katalogu WordPressa. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Ustawia zmienne WordPressa i dołączane pliki. */
require_once(ABSPATH . 'wp-settings.php');
wp-config.php
79. - IV -
Przenieść cześć newralgicznych danych do pliku w innej
lokalizacji niż strona (jeśli ustawienia hostingu na to pozwalają)
<?php
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Location of your WordPress configuration. */
require_once(ABSPATH . '../phpdocs/wp-config.php');
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
W konfiguracji PHP dodaj nową ścieżkę do dyrektywy open_basedir: