14
Фев

Белый экран и редиректы на сайте с WordPress

Очень часто случается так, что после каких-либо действий с сайтом на WordPress возникают проблемы и не всегда эти проблемы получается просто объяснить, а тем более быстро исправить проблему.

Белый экран

Причина 1: “Возникновение критических ошибок в коде”

Дело в том, что в зависимости от настроек вашего сервера, конфигурации хостинга и некоторых других факторов, функция вывода ошибок на экран может оказаться отключенной, что в свою очередь приведет к тому, что при возникновении проблем на сайте, вы увидите белый экран. Причиной ошибки может стать как плохо написанный php-код, так и несовместимость версий PHP.

Первым делом, конечно же, человек часто сталкивающийся с разработкой сайтов, попытается включить отображение ошибок на проблемном сайте, редактируя файл .htaccess, либо же редактированием wp-config.php, изменяя значение константы WP_DEBUG (в случае использования WordPress), либо вручную инициализируя показ ошибок, через php:

// PHP CODE

<!--?php ini_set("display_errors",1);<br ?--> error_reporting(E_ALL);

Но, исходя из личного опыта, могу сказать, что такой подход к проблеме не всегда является эффективным и, часто, подобные действия не приводят к желаемому результату и, за счет этого, теряется очень много времени.

Наиболее эффективным в моей практике всегда было использование встроенного функционала для отладки WordPress, а именно объявление констант, которые этот самый функционал активируют:

// PHP CODE

<!--?php define( 'WP_DEBUG', true );<br ?--> define( 'WP_DEBUG_LOG', true );

Первая константа включит отладку, вторая активирует запись всех данных отладки в специальных файл, который находится в /wp-content/debug.log.
После включения записи в лог, нужно воспроизвести еще раз свою проблему и открыть файл /wp-content/debug.log. Там вы скорее всего и увидите причину своей ошибки. Обычно нужно обращать внимание на ошибки типа “Fatal”, т.к. именно они останавливают выполнение программы и вызывают популярный “белый экран”.

Причина 2: “Нехватка оперативной памяти”

Чаще всего это случается, если вы перенесли сайт на другой хостинг, или установили ресурсоемкий плагин на свой сайт, а мощностей, которые вам предоставляет хостинг, “по умолчанию”, не хватило.

Самым простым решением является увеличение выделяемой памяти в файле wp-config.php, путем добавления в начало файла строки:

// PHP CODE

<!--?php define('WP_MEMORY_LIMIT', '256M');

<br ?--> Где 256M – это объем выделяемой памяти. Число нужно смотреть исходя из ситуации, т.к. по-умолчанию каждый хостинг провайдер выделяет разный объем памяти и для работы каждого сайта требуется свой объем оперативной памяти. Возможно вам не хватит 256 МБ для нормальной работы и потребуется указать 512M или 1024М.

Также довольно часто случается так, что хостинг не предоставляет необходимых объемов ОЗУ. Так случается, когда пользователи, с целью экономии средств, покупают дешевые хостинги. В таком случае вам придется либо сменить хостинг-провайдера, либо уменьшить потребление ресурсов вашим сайтом(что часто является невозможным).

В своей практике я встречал хостинги, на которых даже чистый WordPress, без плагинов и тем отказывался нормально работать.

Поэтому, рекомендую, перед покупкой хостинга уточнять подобные моменты с тех. поддержкой хостинга, что позволит вам сэкономить ваше время, деньги и нервы.

Причины редиректов на сайте с WordPress

Неоднократно встречал в своей практике случаи, когда после переноса сайта на другой хостинг, на сайте появляются редиректы непонятного происхождения. Естественно сайт не сможет полноценно работать, если будет постоянно перенаправляться на другие адреса.

Причина 1: “В БД указан старый адрес сайта”

В свое время, я очень много времени проводил в поисках причины таких редиректов и их исправления. Чаще всего причиной является то,  что разработчик, переносивший сайт на другой хостинг, забыл изменить в базе данных адрес сайта,  в таком случае просто нужно воспользовавшись phpMyAdmin, зайти в таблицу wp_options и изменить значение siteurl и home, сделать это можно выполнив всего один SQL-запрос:

// MYSQL CODE

UPDATE `wp_options` SET `option_value`='Новый_адрес_сайта' WHERE `option_name` IN ('siteurl', 'home')

Если проблема ушла после выполнения запроса – значит все отлично, но если нет – попробуйте открыть сайт “инкогнито”, т.к. редиректы очень неплохо кэшируются всеми современными браузерами.

Причина 2: “Редирект настроен программно”

Если и это не помогло – нужно искать причину в коде. В этом нам поможет хук WordPress “wp_redirect”.
Добавляем события на этот хук, выводим стек вызываемых функций и приходим к пониманию причины редиректа(проанализировав последовательность вызываемых функций можно понять где и кем вызывается функция, которая перенаправляет вас на другой адрес). Пример такого кода:

// PHP CODE

<!--?php add_action('wp_redirect', function(){<br ?--> debug_print_backtrace();
die();
});

Причина 3: “Редирект настроен в файле .htaccess”

Это самый простой случай из всех и для его устранения нужно, открыть файл .htaccess в корневом каталоге и проанализировать его содержимое. Найти причину достаточно просто, т.к. часто адрес, на который вас перенаправляет сайт прописан в .htaccess, а исправлением проблемы является элементарное удаление нескольких строк.  Обычно, это занимает всего пару минут.