Белый экран WordPress (пустая страница сайта)

Белый экран WordPress (пустая страница сайта)

Все, кто когда-либо имел сайт на WordPress рано или поздно могли столкнуться с таким явлением, как «белый экран WordPress».  Белый экран показывается в том случае, если обнаружена критическая ошибка PHP либо исчерпались ресурсы оперативной памяти на сервере.

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

Включение режима отладки

Нужно перейти на FTP и в файле wp-config.php установить константу WP_DEBUG в значение true. По умолчанию стоит false.

define( 'WP_DEBUG', true);

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

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

Многие советуют сразу отключить все плагины, но сразу нужно включить режим отладки, ведь отключать нужно какой-то 1 плагин, а не все. Зачем тратить много время на включение и отключение, если можно сразу увидеть причину.

Совет! Можно отключить сразу все плагины зайдя по FTP и переименовав папку /wp-content/plugins. Но вернув имя назад — придется вручную из админки активировать каждый плагин.

Ошибка нехватки памяти

Если вы увидели ошибку, связанную с нехваткой памяти? Она будет выглядеть приблизительно так:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 7680 bytes) in /home/xyz/public_html/abc/tuv/wp-includes/kses.php(1005)

То необходимо увеличить объем памяти на сервере/хостинге, либо если это сервер — перезагрузить его, это может исправить ошибку.

Ошибки при автоматическом обновлении

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

В этом случае нужно зайти на FTP и проверить, есть ли в корне сайта файл .maintenance. Могло произойти и такое, что WordPress после обновления не смог удалить этот файл, что и привело к проблемам. После его удаления все должно стать на свои места.

Добавить свой bulk action WordPress (Custom Bulk Action)

Добавить свой bulk action WordPress (Custom Bulk Action)

Бывает такая ситуация, когда вам необходимо добавить функцию обработки постов в админке WordPress по определенному критерию, который не предусмотрен по умолчанию. Например, нельзя применить действие к постам, выделенным галками, по параметру indexed Yoast SEO. То есть по параметру открытости для индексации. Придется открывать каждый пост и вручную настраивать видимость для индексации. Чтобы добавить подобный функционал, вам нужно добавить свой bulk action WordPress (Custom Bulk Action). Этим мы сейчас и займемся.

Добавляем свой bulk action WordPress (Custom Bulk Action)

Чтобы нам добавить собственные bulk action — нам потребуется немного стороннего функционала, который нам предоставляет хороший плагин под названием Custom Bulk Actions.

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

Скачаем и установим плагин:

Custom bulk action wordpress

Массовая установка выделенным постам index или noindex (Custom Bulk Action)

Далее в файл functions.php добавим следующий код:

// Создадим объект, который предоставляет плагин для bulk action
// Указываем тут post_type, для которого регистрируем bulk action, в нашем
// случае - это directory. Можно указать несколько типов контента
$bulk_actions = new Seravo_Custom_Bulk_Action( array('post_type' => 'directory' ) );

// Регистрируем новый bulk action, чтобы установить посты не индексируемыми
$bulk_actions->register_bulk_action(array(
    // Название пункта в выпадающем списке на странице постов в админке
    'menu_text'=>'Yoast set noindex',
    'admin_notice'=>'Directories marked as noindexed',
    'callback' => function($post_ids) {
        foreach ($post_ids as $post_id) {
            // Обновляем опцию indexed в базе, в таблице post_meta, где Yoast определяет
            // какой пост будет индексироваться, а какой нет, 1 - пост не будет индексироваться
            update_post_meta($post_id,"_yoast_wpseo_meta-robots-noindex", "1");
        }
        return true;
    }));

// Регистрируем новый bulk action, чтобы установить посты индексируемыми
$bulk_actions->register_bulk_action(array(
    // Название пункта в выпадающем списке на странице постов в админке
    'menu_text'=>'Yoast set index',
    'admin_notice'=>'Directories marked as indexed',
    'callback' => function($post_ids) {
        foreach ($post_ids as $post_id) {
            // Обновляем опцию indexed в базе, в таблице post_meta, где Yoast определяет
            // какой пост будет индексироваться, а какой нет, "" - пост будет индексироваться
            update_post_meta($post_id,"_yoast_wpseo_meta-robots-noindex", "");
        }
        return true;
    }));

// Инициализация приложения
$bulk_actions->init();

Результатом данного кода в админке будут добавлены 2 новых bulk action WordPress:

  1. Добавит выделенным галками постам опцию noindex
  2. Уберет выделенным галками постам опцию noindex

Вот что мы получаем в админке, когда отработает код:

Вставили wordpress custom bulk action

Если выбрать Yoast set noindex и нажать «Применить» — то внутри поста мы увидим, что он закрыт для индексации:

Пост закрыт для индексации

Если заново выделить пост галкой и выбрать Yoast set index — применив изменения, зайдем в пост и он будет открыт для индексации:

Пост открыт для индексации

Таким вот простым образом мы добавили свой bulk action (Custom Bulk Action) в WordPress и сделали функцию массовой установки выделенным постам index или noindex.

Ограничить количество символов в заголовках постов WordPress

Кто знаком с основами СЕО, тот может подтвердить, что оптимальная длина заголовков постов составляет 55-60 символов. Именно такое количество символов в заголовках было определено опытным путем в ходе развития отрасти СЕО. Специалисты долгое время анализировали этот параметр и нашли золотую середину. Сейчас разберемся как ограничить количество символов в заголовках постов WordPress.

Тут играет несколько факторов, дело в том, что заголовки не длинные, в районе до 60 символов, легче запоминаются человеком. Если заголовок краток и ёмок, то у такого поста больше шансов быть прочитанным. Поэтому заголовки до 60 символов взяли за основу и поисковые системы, а также СЕО плагины для CMS.

Рассмотрим бесплатный плагин, который проинформирует в случае, если заголовок будет длиннее, чем 60 символов.

Плагин Limit Post Titles

Скачать можно его по ссылке Limit Post Titles.

Плагин Limit Post Titles

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

Limit Post Titles настройки

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

Рекомендуется также использовать плагин SEO by Yoast -который позволяет задать не только длину заголовка поста, но и тайтл для страницы. Тут можно ознакомиться с настройкой карты сайта через плагин SEO by Yoast.

Заголовок записи или поста, который вынесен в тег title, и он задается через плагин SEO by Yoast, отображается в строке адреса браузера и в поисковой выдаче. Его нужно ограничивать до 60 символов. А заголовок в теге h1 — он отобразится только в посте, его можно сделать более длинным. Можно разделять заголовки, а можно и делать одинаковыми.

 


Fatal error: Call to undefined function twentyseventeen_get_svg() in /home/mijirov/web-factory.org/www/wp-content/themes/factory_new/index.php on line 50