Mixed content w WordPressie pojawia się wtedy, gdy strona działa przez HTTPS, ale część zasobów nadal ładuje się przez HTTP. Najpierw znajdź konkretny adres powodujący błąd, a następnie trwale zamień odwołania w bazie danych. Przed każdą operacją wykonaj kopię zapasową bazy.
Dlaczego kłódka jest przekreślona mimo aktywnego SSL?
Certyfikat SSL może działać poprawnie, a mimo to strona nie będzie w pełni zabezpieczona. Dzieje się tak, gdy dokument otwiera się pod adresem https://, lecz obrazy, arkusze CSS, skrypty JavaScript, pliki wideo albo ramki iframe są pobierane z adresów zaczynających się od http://.
Taki konflikt nazywa się Mixed Content, czyli treścią mieszaną. Przeglądarka może wtedy wyświetlić ostrzeżenie, zablokować część zasobów albo pokazać stronę z uszkodzonym układem. Pasywne elementy, takie jak obrazy, zwykle powodują brak grafiki lub żółte ostrzeżenie. Aktywne elementy, na przykład skrypty, style CSS i iframe, mogą zostać zablokowane całkowicie, ponieważ ich podmiana stwarza większe ryzyko dla użytkownika.
Jak znaleźć zasób powodujący błąd?
Naprawę zacznij od ustalenia, który adres nadal korzysta z HTTP. Samo przełączenie WordPressa na HTTPS nie zmienia automatycznie każdego starego odwołania zapisanego w treści, ustawieniach wtyczek lub bazie danych.
W Chrome, Edge albo Firefox użyj narzędzi deweloperskich. Procedura wygląda następująco:
- Otwórz problematyczną podstronę i naciśnij F12 albo Ctrl+Shift+i.
- Przejdź do zakładki Console i odśwież stronę.
- Znajdź komunikaty zawierające określenia „Mixed Content” albo „insecure”.
- Odczytaj pełny adres zasobu, na przykład
http://twojadomena.pl/wp-content/uploads/..., i ustal, czy dotyczy obrazu, skryptu, stylu lub elementu zewnętrznego.
Żółte ostrzeżenia najczęściej dotyczą treści pasywnej. Czerwone komunikaty zwykle oznaczają aktywną treść mieszaną, którą przeglądarka zablokowała. Sprawdź także kilka podstron, ponieważ błąd może występować tylko w konkretnym wpisie, szablonie albo formularzu.
Najczęściej problem powodują:
- obrazy i pliki multimedialne dodane przed migracją na HTTPS,
- adresy arkuszy CSS oraz skryptów JavaScript zapisane w motywie lub wtyczce,
- zasoby zewnętrznych usług reklamowych, statystycznych albo formularzy,
- odnośniki wpisane ręcznie w edytorze treści lub ustawieniach page buildera.
Wtyczka czy baza danych – co wybrać?
Wtyczka naprawiająca Mixed Content „w locie” może szybko przywrócić działanie strony, ale nie usuwa starych adresów z treści. Przy każdym żądaniu musi modyfikować wynik HTML, co może komplikować działanie pamięci podręcznej i utrudniać późniejszą diagnostykę. Trwała zamiana adresów w bazie jest czystsza, choć wymaga większej ostrożności.
| Kryterium | Wtyczka działająca w locie | Search and Replace w bazie |
|---|---|---|
| Wydajność | Może dodawać operację podczas generowania strony | Brak stałej podmiany po jednorazowej zmianie |
| Trwałość | Zależy od aktywnej wtyczki | Adresy zostają poprawione w zapisanych danych |
| Ryzyko | Niewielkie przy podstawowej konfiguracji | Wymaga kopii bazy i kontroli zakresu zamiany |
| Złożoność | Niska | Średnia, szczególnie przy dużej stronie |
Narzędzia takie jak Really Simple Security mogą pomóc podczas migracji na HTTPS, ale nie powinny zastępować sprawdzenia źródła problemu. W przypadku stałych adresów zapisanych w WordPressie lepszym rozwiązaniem jest jednorazowa, kontrolowana zamiana.
Jak trwale naprawić Mixed Content w bazie WordPress?
Do zamiany adresów możesz użyć wtyczki Better Search Replace. Pracuje ona na tabelach bazy danych, dlatego przed rozpoczęciem przygotuj możliwość przywrócenia poprzedniego stanu.
Przed zmianą sprawdź, czy masz:
- pełną kopię bazy danych WordPressa,
- kopię plików strony, najlepiej z możliwością odtworzenia,
- dostęp do panelu WordPress oraz panelu hostingu lub phpMyAdmin,
- środowisko testowe, jeśli witryna jest rozbudowana albo ma znaczenie biznesowe.
Nie wykonuj masowej zamiany bez kopii bazy danych. Błędny adres, niewłaściwy zakres tabel albo przerwanie operacji może uszkodzić zapisane dane. Kopia zapasowa pozwala wrócić do poprzedniej wersji.
Po wykonaniu kopii przejdź przez następujące kroki:
- Zainstaluj i aktywuj Better Search Replace z poziomu panelu WordPress.
- Otwórz Narzędzia → Better Search Replace.
- W polu wyszukiwania wpisz pełny stary adres, na przykład
http://twojadomena.pl. - W polu zamiany wpisz jego wersję HTTPS, czyli
https://twojadomena.pl. - Zaznacz tabele WordPressa, zwłaszcza
wp_postsiwp_postmeta, pamiętając, że prefiks tabel może być inny. - Uruchom najpierw tryb dry run, aby sprawdzić liczbę dopasowań bez zapisywania zmian.
- Jeśli wynik jest prawidłowy, wyłącz tryb testowy i uruchom właściwe wyszukiwanie oraz zamianę.
- Wyczyść pamięć podręczną WordPressa, wtyczki cache, serwera i przeglądarki, a następnie ponownie sprawdź stronę w konsoli.
Wyszukiwanie pełnego adresu własnej domeny jest bezpieczniejsze niż globalna zamiana każdego wystąpienia http://. Ten drugi wariant może objąć zewnętrzne adresy, które nie mają działającej wersji HTTPS. Jeśli zasób pochodzi z obcej domeny, sprawdź jej certyfikat albo zastąp go innym źródłem.
Po zakończeniu operacji wtyczka nie musi stale działać. Możesz ją wyłączyć, jeśli użyto jej wyłącznie do jednorazowej zamiany. Nie usuwaj kopii zapasowej, dopóki nie potwierdzisz poprawnego działania strony, formularzy, panelu logowania i procesów zakupowych.
Co zrobić, jeśli problem nadal występuje?
Jeśli w bazie nie ma już starego adresu, źródło problemu może znajdować się poza zapisanymi treściami. Sprawdź jeszcze:
- ustawienia Elementora, wybierając Elementor → Narzędzia → Zastąp adres URL i aktualizując adres HTTP do HTTPS,
- pliki motywu, w których adres może być wpisany na stałe w PHP, CSS lub JavaScript,
- ustawienia innych page builderów, wtyczek formularzy, galerii i sliderów,
- zewnętrzne skrypty reklamowe, analityczne oraz fonty, które nie obsługują poprawnie HTTPS.
Gdy adres znajduje się bezpośrednio w pliku motywu lub wtyczki, popraw go w kodzie albo zgłoś problem autorowi. Nie edytuj plików motywu potomnego bez kopii, ponieważ aktualizacja motywu może nadpisać zmianę. Po każdej poprawce ponownie odśwież stronę z otwartą konsolą i sprawdź, czy czerwone komunikaty zniknęły.
Najbezpieczniejszy schemat działania jest prosty: najpierw identyfikacja zasobu w konsoli, potem kopia zapasowa, kontrolowana zamiana adresów w bazie i końcowy test wszystkich ważnych podstron. Dzięki temu naprawiasz przyczynę Mixed Content, a nie tylko ukrywasz jej objawy.