Ваш путь: Главная » Техническое SEO, Версии WordPress » текущая страница
возможно заказать разработку или сопровождение, услуги вашего сайта/блога

написано: — 
отредактировано: 2021-03-17
издатель: в теме: Техническое SEO, Версии WordPress
Запросто с WordPress — создание сайтов ATs media

Исправляем ошибки шаблона сайта в соответствие с версией php 8

Как известно, не так давно вышла новая версия php 8 — замечательно! Исправлены недочёты предыдущих версий, внесены некоторые корректировки в язык программирования и т.п. словом, по заявлениям разработчиков — php стал много быстрее и безопаснее! Хорошо.

 

Но мы понимаем, что в php 8 ошибок больше и он медленнее, чем, скажем, грядущий php 9. Но это не суть… а суть в том, что наши сайты бесспорно нуждаются в модернизации! Например, многие, если изменяют на хостинге версию до обновленной, то сайты просто-напросто ложатся: белый экран. И, если у нас шаблон сайта не обновляется (и мы не используем дочернюю тему), то никто за нас исправления в код шаблонов не внесёт. Сайт не будет нормально работать!

 

Я за последнее время многим правил шаблоны под новый php. Пришло время написать небольшую статью по теме, как исправить ошибки шаблона сайта для php 8. Сделаю, на основе ваших пожеланий, видеоролик, в котором мы прямо на рабочем сайте от начала (когда сайт «ложится» и до конца (когда вновь заработает») поправим шаблон, так что пишите пожелания о темах, которые нужно включить в ролик (если тема версий php в связке с WordPress будет интересна, буду её расширять, дополнять. Так что жду откликов…).

 


 

 

 

 

 

нужно ли править шаблон под новые версии php?

 

 

 

 

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

 

Однако по статье приведу несколько примеров, а вы уж делайте выводы.

 

К примеру, вы решили оставить для своего сайта устаревшую версию. идет время… плагины и вообще все окружающие веб мощности естественным образом обновляются… Вывод, через какое-то время ваш сайт откажется работать с обновленными плагинами и т.п. Вам придется сайт заморозить! т.е. использовать старый функционал. Хорошо это или плохо!? ответить трудно.

 

Если немного смыслите в сайтостроении — это одно дело, а если — нет, это совсем иное…

 

Думаю, как ни крути, но самое логичное — постепенно — приводить код шаблона в порядок.

 

 

 

В текущем посте дам несколько вариантов исправления ошибок по текущим версиям php. У вас, конечно, могут возникнуть какие-то иные ошибки… Пишите о них, поправим…

 

 

 

 

к оглавлению

написание кода, комментирование кода php — правила

 

 

 

 

…предположим, ваши сайты работали на php 7.4.

 

Для того, чтобы приступить к глобальным правкам шаблона, подготовим сайт на текущей старой версии:

 

 

Рекомендую создать копию сайта и выполнять правки на тестовом варианте сайта (как создать тестовый сайт за несколько минут).

 

Возможно, послужит пользой прочесть об истории обновлений версий Вордпресс.

 

 

 

к оглавлению

подготовка шаблона к включению на сервере версии php 8

 

 

 

О том, что плагины должны быть обновлены, разговор выведем за скобки — это и так ясно!

 

 

 

Первое, с чего начнем концерт, это обратим внимание на написание кода в шаблоне: php 8 строже относится к помаркам в коде. К неряшливому коду…

 

 

Проверьте файлы шаблона. Отнеситесь внимательнее к комментариям в коде.

 

 

Например, если в финале файла размещен какой то комментарий, то он должен быть обязательно соответственно закрыт. Иначе, как только переключитесь на 8-ку — сайт обрушится.

 

 

то есть должно быть /* коммент */.

 

Подробнее читать как закомментировать код HTML, CSS, PHP, JS (есть подробное видео).

 

 

к оглавлению

установим на сайте плагин Query Monitor

 

 

Устанавливаем и активируем плагин…

 

…и, конечно же, непосредственно перед правкой добавляем в константу  define('WP_DEBUG', true);  параметр true.

 

это в конфигурации сайта — в файле по пути /домен/public_html/wp-config.php — файл wp-config.php

 

 

Этап подготовки сайта для смены версии php считаем законченным.

 

 

 

 

к оглавлению

переходим к основному решению задач перехода сайта на новую версию php 8

 

 

 

 

Непременно включаем всё наше внимание!!

 

…и переходим в соответственный раздел настроек хостинга и переключаем сервер на php 8.

 

 

…как правило после смены версии сервера, сайт падает!!

 

Однако, мы подготовились…

 

Открываем, например, главную страницу сайта (фронтэнд) — ну или админку.

 

 

То, что мы используем в конфигурации сайта дебаггер… и плагин Query Monitor нас здорово выручит! В этом случае перед нашими глазами будет не молчаливый белый экран, но подсказки ошибок!!!

 

…на белом листе сайта появятся подсказки о возможных ошибках (у кого-то может быть сайт и не совсем сломается… то есть будут частично видны элементы сайта, но в любом случае дебаггеры укажут подсказки о возможных ошибках, с решения которых — методично — и приступаем к исправлению):

 

 

 

php 8 ошибки шаблона сайта

 

 

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

 

 

Скрин выше, как раз указывает на то, как я и говорил выше, что комментарий в финале кода шаблона не закрыт!!! Поправляем, если у вас что-то подобное…

 

 

Подробнее станем разбираться в видеорлике.

 

 

 

 

к оглавлению

ошибки или несоответствия кода шаблона для версии php 8

 

 

 

 

примеры ниже — только принципиальные примеры, возможные решения!

 

 

по мере испрвления ошибок шаблона — плагин Query Monitor подскажет о том, что в коде шаблона используется устаревшая функция, которая теперь вызывает фатальную ошибку в версии php 8:

 

 

Функция create_function() — достаточно частая ошибка в старых шаблонах.

 

 

 

Дело в том, что функция create_function() считается устаревшей и в более новых версиях php будет вызывать ошибки. Так в версии php 8 она вызовет фатальную ошибку.

 

 

 

Исправляем примерно такими вариантами:

 

 

Например, есть известный код (фильтр) относительно безопасности сайта — многие его используют:

 

 

// уборка ошибки неправильный логин/пароль для ранних версий php 8
add_filter( 'login_errors', create_function( '$a', "return null;" ));

 

 

 

 

данный фильтр в php 8 теперь вызывает фатальную ошибку!

 

 

 

 

Исправить create_function можно следующим образом: (заменяем create_function на анонимную функцию — подробности о функциях в этой статье опускаю).

 

 

Так:

 

 

// первый вариант для версий php 8 = будет пустое поле ошибки:
//add_filter( 'login_errors', fn()=> null );

 

 

 

либо так:

 

 

//2 вариант для версий php 8
function no_logs_s() { return 'Вы совершили ошибку при наборе данных'; }
add_filter( 'login_errors', 'no_logs_s' );
/*уборка ошибки неправильный логин/пароль*/

 

 

 

либо ещё один пример:

 

 

// неправильно - устаревший пример
if($this->options['general']['clean_exerpts']) {
add_filter('excerpt_more', create_function('', 'return "";') );
}

 

 

 

правильно:

 

 

// ИСПРАВЛЕНО:
if($this->options['general']['clean_exerpts']) {
add_filter('excerpt_more', fn()=> null ); }

 

 

 

create_function('', 'return "";') — заменим на: fn()=> null

 

 

 

 

 

к оглавлению

для владельцев магазинов на WooCommerce — ошибки сайта-магазина по версии php 8

 

 

 

 

Если вы работаете с плагином WooCommerce, то вам будет полезно примерно такой вариант решения (много решений — функции Wooc для владельцев магазина):

 

 

неправильно:

 

 

//число товаров на странице витрины МАГАЗИНА
add_filter('loop_shop_per_page', create_function('$cols', 'return 9;'));

 

 

 

правильно (как вариант):

 

 

// исправлено
add_filter('loop_shop_per_page', function( $cols ) { return 9; }, 20);

 

 

Этот пример: create_function('$cols', 'return 9;') заменим на: function( $cols ) { return 9;

 

 

То есть заместо устаревшей create_function() используем ананимную (альтернативную) функцию function().

 

 

 

И так далее… в подобном духе исправляем и остальные несоответствия в коде шаблона с обновленной версией php 8.

 

 

 

 

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

 

 

 

…в кодах могут быть на первый взгляд незначительные ошибки, примеру неустановленные одинарные кавычки — всё это в новой версии php вызовет НЕ ТОЛЬКО неотработку отдельного кода, но и фатальную ошибку!

 

 

 

Напоминаю: в видео, которое сейчас готовлю, расскажу по исправлениям ошибок поэтапно. Опишите свои вопросы…

 

 

 

Подробнее об изменениях ЯПа модно почитать в обзоре (на хабре).

 

 

 

 

Как правильно закомментировать код HTML, CSS или PHP, JS

 

 

 

 


...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...




Нажатия на кнопочки определяют Ваше высокое гражданское сознание
Удачи в работе и творчестве..!
Статьи по теме:


Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©


  1. О, получилось обнаружить форму комментариев!!!
    Михаил, я не смыслю в сайтостроении нисколько, шаблон бесплатный, все делала дочь.
    Не смогла перейти на новую версию php, сайт расползся немного, исправить не смогли, откатились назад к прежней версии. Это было год назад. Проблем в работе сайта, чувствую, много по этой причине, но меня устраивает.
    Как думаете, Михаил, по этой причине он может встать окончательно или как-то тихонько поработает? Выходить в лидеры в ПС не мечтаю особо и не стремлюсь) Что скажете?

    Ответить - Людмила

    • Здравствуйте, Людмила!

      О, получилось обнаружить форму комментариев!!!

      это вы к тому, что чрезмерно информации..? а куда ж без неё? да я и не Чехов, чтоб кратко резать, знаете ли…
      по делу:

      Как думаете, Михаил, по этой причине он может встать окончательно или как-то тихонько поработает?

      Поработает, конечно же…
      К примеру, насколько видел — ваш блог томится на Бегет) А там сейчас еще и разговора нет о php 8. Так что…
      Тут дело всё в том, что однажды (скоро или нет) сайт может встать из-за несовместимостей, например, с обновленными плагинами в связке с версией WP, темой (кодом)… и т.п.
      Если не переходить на новые версии php, то когда-то придется сайт замораживать в едином рабочем состоянии текущего времени.
      А касаемо старых версий, то, думаю, они еще будут в арсенале хостингов долго.
      Вот примерно из этих обстоятельств и нужно выцеживать решение о смене php (впрочем, я об этом по тексту выше писал).

      Ответить - Михаил

      • Здравствуйте, Михаил.

        это вы к тому, что чрезмерно информации..?

        Нет-нет…информация в аккурат в норме, все ясно и понятно. К тому, что не знала, как выйти на продолжение статьи до комментариев)). Привычной кнопки «далее» нет))
        Спасибо за ответ. Надо переходить…обращусь к Вам, как созрею. Конфликты плагинов уже ощущаю, например, с Webcraftic Clearfy не обновляется.

        Ответить - Людмила

  2. Спасибо Михаил.
    Несколько ошибок из ваших примеров нашёл у себя на сайте. Исправил. Но что-то ещё чую есть что поправить…
    Я вам на почту заказ отправил.
    Нужно бы добить проблему. К тому же, думаю, вы поправите что нить полезное… Чтоб 9 версии не бояться)

    Ответить - Сергей

  3. Здравствуйте, Михаил.
    У меня вопрос не по теме статьи. Скажите, а как можно записаться к вам на курс по программированию в среде ВП?

    Ответить - Вераника

    • Привет, Вераника!
      Только сейчас курс по «уверенному ведению сайта на Вордпресс». В данный момент он прерван (обстаятельствп) так что напишите мне на почту… И как только возобновим курсовое общение, присоединитесь и вы.

      Ответить - Михаил