Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem
WebHelp.pl Warsztat Artykuły WordPress: zaawansowana konfiguracja

Warsztat / Artykuły i tutoriale

WordPress: zaawansowana konfiguracja

Bartosz Romanowski 4 lipca 2012 komentarze ()

Tagi:WordPress

Panel konfiguracyjny WordPressa został zaprojektowany tak, aby zawierał tylko najpotrzebniejsze i najczęściej używane opcje, dzięki czemu jest przejrzysty i łatwy w ogarnięciu. Znaczne większe możliwości konfiguracyjne skrywa plik wp-config.php, za pomocą którego możemy poprawić trochę bezpieczeństwo naszego serwisu, usprawnić jego działanie czy odchudzić nieco bazę danych.

Konfiguracja WordPressa oparta jest na stałych, definiowanych w pliku wp-config.php. Większość z tych stałych można definiować również w innych miejscach (w plikach szablonu lub wtyczki), ale nie jest to zalecane.

Ustawienia bazy danych

Zaraz po instalacji plik wp-config.php zawiera tylko kilka ustawień. Najważniejszymi z nich, których z reguły nie ma potrzeby zmieniać, są dane bazy danych. Dane te są wprowadzane podczas instalacji WordPressa, ale później można je zmienić (na przykład gdy chcemy przenieść naszą stronę na inny serwer). Jeśli nie znasz danych swojej bazy, skontaktuj się z firmą hostingową obsługującą twój serwer.

Kod: Zaznacz cały
define('DB_NAME', 'nazwa_bazy_danych'); // nazwa bazy danych
define('DB_USER', 'nazwa_uzytkownika'); // nazwa użytkownika bazy danych
define('DB_PASSWORD', 'haslo'); // hasło użytkownika bazy danych
define('DB_HOST', 'host_bazy_danych'); // host bazy danych (zwykle ‘localhost’)
define('DB_CHARSET', 'utf8'); // zestaw znaków dla połączenia z bazą

Parametru DB_CHARSET nie należy zmieniać, chyba że nasz blog działa w innej niż UTF-8 stronie kodowej.

Kolejną sekcją pliku wp-config.php, której z reguły się po prostu nie rusza, jest sekcja zawierająca zestaw kluczy i “soli”, które mają za zadanie utrudnić złamanie mechanizmów autoryzacyjnych WordPressa. Nie zagłębiając się w temat dodam tylko, że ciągi te powinny być długie, skomplikowane i unikalne. Są one generowane w trakcie instalacji WordPressa z wykorzystaniem specjalnego generatora, ale mogą być później zmieniane. Trzeba pamiętać, że zmiana któregokolwiek z kluczy spowoduje wylogowanie wszystkich użytkowników.

Kod: Zaznacz cały
define('AUTH_KEY',         't`DK%X:>xy|e-Z(BXb/f(Ur`8#~UzUQG-^_Cs_GHs5U-&Wb?pgn^p8(2@}IcnCa|');
define('SECURE_AUTH_KEY',  'D&ovlU#|CvJ##uNq}bel+^MFtT&.b9{UvR]g%ixsXhGlRJ7q!h}XWdEC[BOKXssj');
define('LOGGED_IN_KEY',    'MGKi8Br({H*~&0s;{k0<S(O:+f#WM+q|npJ-+P;RDKT:~jrmgj#/-,[hOBk!ry^');
define('NONCE_KEY',        'FIsAsXJKL5ZlQo)iD-pt??eUbdc{_Cn<4!d~yqz))B D?AwK%)+)F2aNwI|siOe');
define('AUTH_SALT',        '7T-!^i!0,w)L#JK@pc2{8XE[DenYI^BVf{L:jvF,hf}zBf883td6D;Vcy8,S)-&G');
define('SECURE_AUTH_SALT', 'I6`V|mDZq21-J|ihb u^q0F }F_NUcy`l,=obGtq*p#Ybe4a31R,r=|n#=]@]c #');
define('LOGGED_IN_SALT',   'w<$4c$Hmd%/*]`Oom>(hdXW|0M=X={we6;Mpvtg+V.o<$|#_}qG(GaVDEsn,~*4i');
define('NONCE_SALT',       'a|#h{c5|P xWs4IZ20c2%4!c(/uG}W:mAvy<I44`jAbup]t=]V<`}.py(wTP%%');

Jedną z niewielu opcji ustawianych za pomocą zmiennej, a nie stałej, jest prefiks dla nazw tabel, który pozwala na zainstalowanie kilku kopii WordPressa w jednej bazie danych. Opcja ta jest ustawiana w trakcie instalacji i możemy ustalić jej wartość w formularzu z danymi logowania do bazy danych.

Trzeba pamiętać, że aby zmienić prefiks tabel po zainstalowaniu WordPressa nie wystarczy modyfikacja tego ustawienia i zmiana nazw tabel - trzeba jeszcze zmodyfikować ręcznie kilka rekordów w tabeli wp_options. Można to również zrobić za pomocą jednej z dostępnych wtyczek (na przykład Better WP Security, która wprawdzie nie do tego służy, ale ma taką funkcję).

Kod: Zaznacz cały
$table_prefix  = 'wp_';

Ustawienia języka

Domyślnym językiem dla WordPressa jest oczywiście język angielski, ale jeśli instalujemy polską wersję skryptu, to język powinien zostać automatycznie ustawiony na nasz rodzimy. Niezależnie jednak od tego w każdej chwili możemy zmienić używany język modyfikując zawartość parametru WP_LANG:

Kod: Zaznacz cały
define('WPLANG', 'pl_PL');

Wartość parametru to tak naprawdę nazwa pliku .mo zawierającego tłumaczenie. WordPress będzie szukał tego pliku najpierw w katalogu wp-content/languages, a następnie w wp-includes/languages. Możemy wskazać mu inny katalog dodając do pliku wp-config.php parametr WP_LANG_DIR:

Kod: Zaznacz cały
define('WP_LANG_DIR', $_SERVER['DOCUMENT_ROOT'].'wordpress/languages');

Trzeba pamiętać, że ustawiony język będzie brany pod uwagę również przez wtyczki i szablony (o ile obsługują one pliki językowe).

Ustawienia strony

Większość danych naszego serwisu, takich jak jej adres, należy wprowadzić korzystając z panelu administracyjnego. Zdarzyć się jednak może (i zdarza nadzwyczaj często), że zmienimy adres strony na błędny, co owocuje jej niedostępnością i brakiem możliwości zalogowania się do panelu administracyjnego. W takim przypadku z pomocą przychodzą nam dwie ustawiane w pliku wp-config.php opcje: WP_SITEURL i WP_HOME.

Kod: Zaznacz cały
define('WP_SITEURL', 'http://domena.pl/wordpress');
define('WP_HOME', 'http://domena.pl/');

Stała WP_SITEURL określa adres, pod jakim zainstalowaliśmy WordPressa, natomiast WP_HOME określa adres naszej strony. Zwykle oba te adresy są identyczne, chyba że chcemy przenieść pliki WordPressa w inne miejsce niż katalog główny domeny. Stałe te nadpisują opcje “Adres URL WordPressa” i “Adres URL witryny” w sekcji “Ustawienia -> Ogólne”.

Trzeba pamiętać, że ustawienie tych opcji nie zmienia odpowiednich wpisów w bazie danych, tak więc po usunięciu dwóch powyższych linii z pliku wp-content.php powrócimy do zapisanych poprzez panel administracyjny ustawień. Aby to zrobić należy skorzystać z opcji RELOCATE, dzięki której możemy zmienić powyższe ustawienia w bazie danych.

Znacznie ciekawszą możliwością jest przeniesienie katalogu wp-content w inne miejsce. Można chcieć to zrobić ze względu na bezpieczeństwo, tak aby trudniej było znaleźć ten katalog na naszym serwerze. W katalogu tym znajdują się wtyczki, szablony oraz (domyślnie) przesłane za pomocą wbudowanego uploadera pliki.

Jeśli przenieśliśmy już fizycznie katalog wp-content w inne miejsce trzeba dodać do pliku wp-config.php dwie nowe opcje: WP_CONTENT_DIR i WP_CONTENT_URL:

Kod: Zaznacz cały
define('WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'].'/katalog/nowy-wp-content');
define('WP_CONTENT_URL', 'http://domena.pl/katalog/nowy-wp-content');

Pierwsza z nich określa ścieżkę do katalogu na serwerze, a druga adres URL katalogu. Do poprawnego działania konieczne jest ustawienie poprawnych wartości dla obu tych stałych.

Opcjonalnie można również przenieść sam katalog wtyczek (domyślnie jest to wp-content/plugins). Aby to zrobić należy do pliku wp-config.php dodać dwie nowe stałe: WP_PLUGIN_DIR i WP_PLUGIN_URL. Ich zawartość jest analogiczna do opisanych wyżej stałych WP_CONTENT_DIR i WP_CONTENT_URL.

Kod: Zaznacz cały
define('WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'].'/katalog/nowy-wp-content/plugins');
define('WP_PLUGIN_URL', 'http://domena.pl/katalog/nowy-wp-content/plugins');

Niestety, nie ma analogicznego sposobu na zmianę lokalizacji katalogu z szablonami (wp-content/themes).

Na koniec warto jeszcze wspomnieć o opcji COOKIE_DOMAIN, dzięki której możemy określić domenę dla ciasteczek (cookies) ustawianych naszym odwiedzającym. Jest to przydatne jedynie w specyficznych przypadkach, na przykład gdy serwujemy statyczne elementy z subdomeny lub innej domeny.

Kod: Zaznacz cały
define('COOKIE_DOMAIN', 'nasza-strona.pl');

Ustawienia automatycznych aktualizacji

WordPress posiada wbudowany system automatycznych aktualizacji samego siebie oraz wtyczek i szablonów. Jeśli z jakiegoś powodu (najczęściej związanego z konfiguracją serwera) system ten nie działa, z pomocą może przyjść opcja zmiany metody pobierania aktualizacji. Dostępne są następujące metody:

  • direct - domyślna metoda
  • ssh2 - metoda wykorzystująca rozszerzenie SSH
  • ftpext - pobieranie przez FTP z wykorzystaniem rozszerzenia FTP
  • ftpsockets - pobieranie przez FTP z wykorzystaniem socketów (klasa WordPressa)

Ostatnia z dostępnych metod powinna działać na każdym serwerze, aczkolwiek należy ją wybierać dopiero gdy wszystkie inne zawiodą. Aby zmusić WordPressa do skorzystania z wybranej metody pobierania aktualizacji należy skorzystać z opcji FS_METHOD:

Kod: Zaznacz cały
define('FS_METHOD', 'ftpext');

W przypadku wybrania jednej z dwóch ostatnich metod dobrze jest również podać dane serwera FTP. Służy do tego kilka opcji, których przykładowe ustawienie może wyglądać tak:

Kod: Zaznacz cały
define('FTP_BASE', '/sciezka/wordpressa/');
define('FTP_CONTENT_DIR', '/sciezka/wordpressa/wp-content/');  // opcjonalnie
define('FTP_PLUGIN_DIR ', '/sciezka/wordpressa/wp-content/plugins/');  // opcjonalnie
define('FTP_USER', 'nazwa_uzytkownika');
define('FTP_PASS', 'haslo');
define('FTP_HOST', 'ftp.nasz-serwer.pl');

Inne ustawienia

Plik wp-config.php pozwala nam również zapanować nad rewizjami wpisów i stron. Domyślnie WordPress zapisuje każdą wersję każdego wpisu i strony, dzięki czemu w dowolnym momencie możemy cofnąć się do niemal dowolnego momentu. Nie zawsze jednak funkcja ta jest nam potrzebna, a nawet jeśli jest, to nie zawsze chcemy trzymać wszystkie kolejne wersje wpisu.

Aby całkowicie wyłączyć funkcję rewizji należy ustawić opcję WP_POST_REVISIONS:

Kod: Zaznacz cały
define('WP_POST_REVISIONS', false);

Za pomocą tej samej opcji możemy również ograniczyć liczbę przechowywanych wersji wpisu:

Kod: Zaznacz cały
define('WP_POST_REVISIONS', 5); // przechowywane będzie 5 ostatnich wersji

Podczas edycji wpisu WordPress okresowo zapisuje w tle jego treść. Domyślnie dzieje się to co 60 sekund, możemy jednak zmienić odstęp czasu pomiędzy kolejnymi automatycznymi zapisami za pomocą opcji AUTOSAVE_INTERVAL:

Kod: Zaznacz cały
define('AUTOSAVE_INTERVAL', 120);   // automatyczny zapis co 120 sekund

Dostępna jest również opcja EMPTY_TRASH_DAYS pozwalająca na zmianę czasu, po jakim następuje automatyczne opróżnienie kosza, zawierającego usunięte wpisy, strony, załączniki czy komentarze. Domyślnie czyszczenie odbywa się po 30 dniach.

Kod: Zaznacz cały
define('EMPTY_TRASH_DAYS', 60); // kosz będzie opróżniany po 60 dniach
define('EMPTY_TRASH_DAYS', 0);  // funkcja kosza będzie wyłączona

Debugowanie

WordPress posiada kilka opcji, dzięki którym poszukiwanie błędów w naszych szablonach lub wtyczkach będzie nieco łatwiejsze. Włączają one wyświetlanie komunikatów o błędach i ostrzeżeń, a także pozwalają na analizę wykonywanych zapytań SQL.

Nigdy, pod żadnym pozorem, nie należy włączać opisanych poniżej opcji w dostępnym publicznie serwisie.

Opcja WP_DEBUG umożliwia włączenie trybu debugowania w WordPressie:

Kod: Zaznacz cały
define('WP_DEBUG', true);

WordPress w trybie debugowania wyświetla wszystkie komunikaty o błędach (również w zapytaniach SQL), ostrzeżenia i informacje zwracane przez interpreter PHP, a także informacje o użyciu przestarzałych funkcji WordPressa. Generalnie napisana poprawnie szablony czy wtyczki nie powinny zwracać żadnych z tych komunikatów - warto więc przy tworzeniu takowych testować je z włączonym trybem debugowania.

Możemy również przekierować wszystkie komunikaty do pliku. Aby to zrobić należy do pliku wp-config.php dodać następujące opcje:

Kod: Zaznacz cały
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);

Od teraz wszystkie komunikaty będą zapisywane do pliku debug.log, znajdującego się w katalogu wp-content.

Aby móc analizować wykonywane przez WordPressa zapytania SQL należy włączyć opcję SAVEQUERIES, dzięki której obiekt WP_DB, służący do komunikacji z bazą danych, będzie zapisywał informacje o wszystkich wykonanych zapytaniach do tablicy $wpdb->queries. Aby z niej skorzystać należ włączyć wspomnianą opcję dodając do pliku wp-config.php następującą linię:

Kod: Zaznacz cały
define('SAVEQUERIES', true);

a następnie dodać do pliku footer.php naszego szablonu następujący kod:

Kod: Zaznacz cały
global $wpdb;
echo "<pre>";
print_r($wpdb-&gt;queries);
echo "</pre>";

Dodatkowo w przypadku problemów ze skryptami JavaScript warto skorzystać z opcji SCRIPT_DEBUG - po jej ustawieniu na true WordPress będzie korzystać z nieskompresowanych wersji skryptów JavaScript i arkuszy stylów CSS (dotyczy to tylko skryptów i arkuszy dostarczanych razem z WordPressem, znajdujących się w katalogach wp-includes/js, wp-includes/css, wp-admin/js i wp-admin/css).

Kod: Zaznacz cały
define('SCRIPT_DEBUG', true);

WordPress scala skrypty JavaScript konieczne do działania panelu administracyjnego celem przyśpieszenia jego ładowania. W przypadku problemów z tymi skryptami dobrze jest wyłączyć scalanie za pomocą opcji CONCATENATE_SCRIPTS:

Kod: Zaznacz cały
define('CONCATENATE_SCRIPTS', false);

Często przyczyną naszych problemów z opartym na WordPressie serwisem jest zbyt mały limit dostępnej dla PHP pamięci. W większości przypadków do zwiększenia tego limitu wystarczy skorzystać z opcji WP_MEMORY_LIMIT:

Kod: Zaznacz cały
define('WP_MEMORY_LIMIT', '128M');

Trzeba jednak pamiętać, że niektóre firmy hostingowe blokują możliwość samodzielnej zmiany limitu pamięci.

Niniejszy tekst omawia najczęściej używane opcje pliku wp-config.php. Wszystkich dostępnych ustawień jest nieco więcej, ale ich zastosowanie jest bardzo wąskie. Trzeba pamiętać, że nieprawidłowe modyfikacje pliku konfiguracyjnego mogą spowodować, że nasz serwis przestanie w ogóle działać, tak więc przed wprowadzaniem zmian warto zachować jego kopię.

Masz pytania lub wątpliwości? Odwiedź nasze forum dyskusyjne.

Bartosz Romanowski

Programista, gadżeciarz, krytyczny miłośnik produktów Apple, fan ciężkich brzmień i niepoprawny pesymista.


Komentarze


HTML CSS JavaScript PHP bazy danych MySQL Flash grafika framework hosting domeny pozycjonowanie wordpress Facebook