4 wskazówki, jak naprawić witrynę WordPress

Opublikowany: 2020-09-03

Kilka dni temu zadzwonił do mnie znajomy i powiedział, że otrzymał zadanie utrzymania starego projektu WordPress. Najwyraźniej strona nie była aktualizowana od ponad trzech lat i wszędzie były problemy. Biedak totalnie utknął, bo nie mógł tam niczego zaktualizować: wtyczek, motywu, treści… nic nie działało. Wszystkie działania (poza przeglądaniem samej witryny) powodowały awarię WordPressa i zwracanie błędu.

Kiedy mamy bezużyteczny WordPress, który stale generuje błędy i nie może być aktualizowany, pierwszą rzeczą, którą musimy zrobić, jest określenie, dlaczego zachowuje się tak, jak się zachowuje. Oznacza to, że musimy znaleźć winowajcę. Zwykle wszelkie problemy, które możesz napotkać w witrynie WordPress, występują z powodu Twojego motywu lub jednej (lub więcej) wtyczek.

Biorąc to pod uwagę, zwykłą procedurą naprawy witryny WordPress jest zidentyfikowanie nieprawidłowej wtyczki, wyeliminowanie jej z równania, zaktualizowanie wszystkiego i na koniec sprawdzenie, czy możemy ponownie zainstalować i zaktualizować wadliwą wtyczkę na naszej stronie internetowej, czy też powinniśmy poszukać wymiana. Dzisiaj opowiem wam cztery proste sztuczki, aby odkryć, dlaczego strona internetowa nie działa, a co za tym idzie, aby móc ją naprawić.

Korzystanie z dziennika błędów naszego serwera

Zakładając hipotezę, że to wtyczka powoduje błędy, które mamy na naszej stronie, pierwszą rzeczą, którą musimy zrobić, to zweryfikować tę hipotezę. Są na to różne sposoby. Osobiście lubię zacząć od przejrzenia dziennika błędów mojego serwera, który ma własną opcję w cPanel:

Logowanie błędów w cPanel
Dziennik błędów w cPanel.

Mamy nadzieję, że log błędów zawiera nie tylko ślad po błędach, które wystąpiły na naszej stronie, ale także informacje o tym, „gdzie” one wystąpiły, a zatem kto był sprawcą. Na przykład w zeszłym tygodniu napotkałem następujący problem w dzienniku błędów mojego środowiska programistycznego:

 appserver_1 | [Mon Aug 24 09:18:20.977541 2020] [php7:notice] [pid 1107] [client 172.20.0.2:34396] PHP Notice: register_rest_route was called <strong>incorrectly</strong>. The REST API route definition for <code>yoast/v1/get_head</code> is missing the required <code>permission_callback</code> argument. For REST API routes that are intended to be public, use <code>__return_true</code> as the permission callback. Please see <a href="https://wordpress.org/support/article/debugging-in-wordpress/">Debugg ing in WordPress</a> for more information. (This message was added in version 5.5.0.) in /app/.lando/wordpress/wp-includes/functions.php on line 5225, referer: http://nab5.lndo.site/wp-admin/edit.php

Dziennik zgłasza powiadomienie PHP, które pojawiło się w jednym z własnych plików WordPressa ( wp-includes/functions.php ), które nie mówi nam nic o tym, że „winowajcą jest wtyczka”. Na szczęście, jeśli przeczytasz całą wiadomość, zobaczysz, że opisuje ona, co się nie powiodło (tj. wywołanie funkcji register_rest_route ) i daje nam wskazówkę, co może być nie tak: Yoast (zobacz, jak wspomina „ yoast/v1/get_head ” ?).

Dzienniki błędów to najłatwiejszy sposób, aby szybko dowiedzieć się, kiedy/czy coś jest nie tak, a jeśli tak, to jaka jest przyczyna błędu. W tym konkretnym przykładzie dowiedziałem się, że mam problem z Yoastem i cóż, wystarczyło zaktualizować wtyczkę do najnowszej wersji

Dezaktywacja wtyczek z pulpitu WordPress

Niestety, nie zawsze można uzyskać dostęp do dziennika błędów witryny, aby dowiedzieć się, kiedy coś się pogorszyło. Lub, jeśli masz dostęp do dziennika, może on być niekompletny. W takich przypadkach potrzebujemy alternatywnych formuł, aby potwierdzić (lub obalić) naszą początkową hipotezę.

Zakładając, że nasza strona internetowa nie działa z powodu wadliwej wtyczki, najłatwiej jest dezaktywować wszystkie wtyczki i sprawdzić, czy błąd nadal występuje. Jeśli nie, winowajcą była wtyczka; jeśli nie ustąpi, problem leży gdzie indziej.

Aby to zrobić, przejdź do pulpitu nawigacyjnego WordPress » Wtyczki , wybierz wszystkie aktywne wtyczki i zbiorczo je dezaktywuj :

Dezaktywuj wtyczki za pomocą działań zbiorczych
Jak dezaktywować wtyczki za pomocą działań zbiorczych.

i sprawdź, czy błąd nadal występuje. Jeśli tak nie jest, wiesz, że przyczyną problemu była jedna z właśnie dezaktywowanych wtyczek. Teraz nadszedł czas, aby odkryć, który dokładnie.

Aby zidentyfikować wadliwe wtyczki, możesz je aktywować jeden po drugim i sprawdzić, kiedy błąd pojawi się ponownie. Lub, jeśli chcesz iść szybciej, możesz zastosować następujące kroki:

  1. Aktywuj połowę swoich wtyczek.
    1. Jeśli błąd pojawi się ponownie, winowajcą jest właśnie aktywowana połowa, więc możesz bezpiecznie aktywować drugą połowę.
    2. Jeśli błąd się nie pojawi, winowajcą jest druga połowa.
  2. Gdy już wiesz, w której „grupie” znajduje się błędna wtyczka, wystarczy skupić się na tej i powtórzyć proces. Aktywuj połowę tej grupy i dezaktywuj drugą połowę (tzn. teraz sprawdzasz jedną czwartą całości) i sprawdź, czy Twoja witryna działa poprawnie.
  3. Powtarzaj proces, aż znajdziesz winowajcę.

Gdy już wiesz, która wtyczka nie działa, sposób rozwiązania problemu zależy od Ciebie. Być może będziesz musiał skontaktować się z programistą, spróbować samodzielnie naprawić wtyczkę, a nawet rozważyć zastąpienie jej alternatywą. Ale przynajmniej teraz wiesz, co musisz zrobić, aby pozbyć się problemu.

Utwórz kopię zapasową listy aktywnych wtyczek

Pamiętasz mojego przyjaciela od początku? Kiedy badaliśmy jego witrynę, wykonaliśmy wszystkie poprzednie kroki i dezaktywowaliśmy wszystkie wtyczki na jego stronie…

…co spowodowało biały ekran śmierci!

Gif pokazujący zdziwionego mężczyznę

Najwyraźniej sieć była pełna niestandardowych wtyczek i poprawek motywów z mnóstwem współzależności. Po dezaktywacji wtyczek niektóre funkcje, na których opierał się motyw, nie były już dostępne, co spowodowało błąd krytyczny. Jest to wyraźnie zła praktyka: motyw nie może polegać na aktywnej wtyczce. Jeśli potrzebuje niektórych funkcji zapewnianych przez określoną wtyczkę, musi wdrożyć kontrole bezpieczeństwa, aby sprawdzić, czy są one dostępne, czy nie.

W każdym razie strona została całkowicie zamknięta i nie byliśmy w stanie ponownie aktywować wtyczek za pomocą pulpitu nawigacyjnego. Więc jakie jest tutaj rozwiązanie? Cóż, na początek zawsze powinieneś mieć kopię zapasową swojej witryny… ale w tym konkretnym przypadku istnieje prostsze i szybsze rozwiązanie.

W Twojej bazie danych WordPressa znajduje się tabela o nazwie wp_options . Znajdziesz tam opcję o nazwie active_plugins . Jego wartością jest tablica ze wszystkimi aktywnymi wtyczkami. Tak więc przed dezaktywacją wtyczek za pomocą akcji zbiorczej, o której wspomniałem wcześniej, po prostu zapisz tę wartość w pliku tekstowym:

Aktywne wtyczki w bazie danych
Aktywne wtyczki w bazie danych.

W ten sposób, jeśli „dezaktywacja wszystkich wtyczek” zakończy się mało prawdopodobnym (ale nie niemożliwym) WSOD, możesz ponownie aktywować wszystkie wtyczki, przywracając opcję active_plugins w bazie danych.

Jak dezaktywować wtyczki przez FTP?

Jeśli wiesz, że Twój problem jest generowany przez konkretną wtyczkę, ale nie masz możliwości dezaktywacji go z pulpitu WordPress, możesz to zrobić bezpiecznie przez FTP.

Jak już wiesz, wtyczki to nic innego jak zestaw plików. Gdy zainstalujesz nową wtyczkę w swojej witrynie, jej kod trafia do folderu wp-content/plugins WordPressa. Korzystając z tej wiedzy, możemy dezaktywować wtyczkę, „usuwając” ją ze wspomnianego folderu.

Przejdź do cPanel swojego serwera i poszukaj opcji FTP:

Opcja FTP w cPanel
Opcja FTP w cPanel.

Następnie za pomocą eksploratora plików FTP znajdź folder wp-content/plugins i zlokalizuj swoją wtyczkę:

Przeglądarka plików CPanel
Przeglądarka plików CPanel.

Teraz wszystko, co musisz zrobić, to usunąć wtyczkę lub zmienić nazwę jej folderu, aby WordPress nie mógł go znaleźć. W ten sposób, jeśli zalogujesz się do swojej witryny WordPress, WordPress nie będzie już widzieć wtyczki i nie będzie w stanie załadować wadliwego kodu, co rozwiąże problem, który miałeś.

Użyj domyślnego motywu

Wreszcie, jeśli hipoteza, że ​​problem został spowodowany przez jedną z twoich wtyczek, nie była prawdziwa, następnym krokiem jest założenie, że winowajcą jest twój motyw. W takim przypadku wystarczy zainstalować domyślny motyw WordPress (taki jak Twenty Twenty) i sprawdzić, czy problem zniknął, czy nie. Jeśli zniknie, już wiesz, że z oryginalnym motywem jest coś nie tak; jeśli tak się nie stanie, będziemy musieli omówić to w innym poście.

Jeśli z jakiegoś powodu nie masz dostępu do pulpitu WordPress, możesz zainstalować nowy motyw na swojej stronie, przesyłając go przez FTP ( wp-content/themes ) i zmienić aktywny motyw za pomocą bazy danych: po prostu zmodyfikuj template opcji i stylesheet w wp_options . Na przykład możesz chcieć ustawić obie opcje na twentytwenty , zakładając, że jest to przesłany motyw.

W podsumowaniu

Waniliowy WordPress (bez wtyczek i niestandardowego motywu) raczej nie zawiedzie. Tak więc, jeśli masz problemy w swojej witrynie, winowajcą jest najprawdopodobniej jedna z twoich wtyczek lub motyw. W dzisiejszym poście widzieliśmy różne formuły, aby znaleźć winowajcę, usunąć go z drogi i odzyskać witrynę. Mam szczerą nadzieję, że nie musisz używać żadnej z tych sztuczek… ale jeśli to zrobisz, mam nadzieję, że okażą się pomocne.

A co z witryną mojego przyjaciela? Cóż, nie wiem, niektórzy mówią, że zmienił karierę…

Polecane zdjęcie Olii Naydy na Unsplash.