как исправить код страницы написанной для ранней PHP
1/ Некорректное отображение текста сайтов на PHP версии 5.6 и выше - Статьи для начинающих - Блог
2/ Как исправить ошибки шаблона сайта для новой версии php 8 |
Например, если в финале файла размещен какой то комментарий, то он должен быть обязательно соответственно закрыт. Иначе, как только переключитесь на 8-ку – сайт обрушится. |
то есть должно быть /* коммент */. |
Неустранимая ошибка: Синтаксис доступа к смещению массива и строки с помощью фигурных скобок больше не поддерживается в |
функция create_function() |
функция create_function() считается устаревшей и в более новых версиях php будет вызывать ошибки. Так в версии php 8 она вызовет фатальную ошибку. |
Исправляем примерно такими вариантами: |
Например, есть известный код (фильтр) относительно безопасности сайта – многие его используют: |
// уборка ошибки неправильный логин/пароль для ранних версий php 8 |
add_filter( 'login_errors', create_function( '$a', "return null;" )); |
Исправить 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 ); } |
работаете с плагином WooCommerce, то вам будет полезно примерно такой вариант решения |
неправильно: |
//число товаров на странице витрины МАГАЗИНА |
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 вызовет НЕ ТОЛЬКО неотработку отдельного кода, но и фатальную ошибку! |
Напоминаю: в видео, которое сейчас готовлю, расскажу по исправлениям ошибок поэтапно. Опишите свои вопросы… |
Подробнее об изменениях ЯПа модно почитать в обзоре (на хабре). |