Главная > --- > как исправить код страницы написанной для ранней PHP DLE

как исправить код страницы написанной для ранней PHP DLE


27-01-2025, 16:43. Разместил: GIG

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 вызовет НЕ ТОЛЬКО неотработку отдельного кода, но и фатальную ошибку!
Напоминаю: в видео, которое сейчас готовлю, расскажу по исправлениям ошибок поэтапно. Опишите свои вопросы…
Подробнее об изменениях ЯПа модно почитать в обзоре (на хабре).


Вернуться назад