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