С некоторых недавних пор владельцам сайтов доступен переход на обновлённую версию php 7.1, в частности ! на хостинге Джино теперь возможно перевести аккаунт аккурат на новую версию! (перед этим работала версия 7.0) – переход осуществляется легко и просто! (кто не знает как, ссылка на статью чуть ниже), однако – сегодня разговор не об этом.
Любое обновление, это, конечно, нужное дело! но вместе с обновлением могут прийти и какие-то ошибки в работу сайта, – например, я столкнулся с такой закавыкой: выскочило предупреждение в блоке, где использовались миниатюры постов. Предупреждение гласило Warning: A non-numeric value encountered in /home/users/c/что-то_ещё/domains/домен.ru/wp-includes/media.php on line 647 …это сообщает нам о том, что в операциях php обработки используются не числовые значения! …далее подробнее…с вариантами решения задачи…
как отключить предупреждение на фронтенде о не числовой php обработке
Warning: A non-numeric value encountered in …
Во-первых, нужно пояснить: данное сообщение всего-то предупреждение (в PHP 7.1), но не ошибка! – предупреждение!
Предупреждение сообщает о том, что в php операциях используются так называемые не числовые значения (можете воспользоваться, к примеру, Гугл переводчиком).
Далее в сообщении на сайте указаны путь к файлу и номер строки, в которой сгенерировано это предупреждение.
Отключить вывод warning-предупреждения можно таким способом: (сразу говорю: этот вариант не совсем правильный; или совсем – не правильный, ибо мы предполагаем править ядро WP, а это нецелесообразно, ибо с очередными обновами WP правки затрутся!) рассматриваем его только знаний для (следующий способ из статьи – более верное решение…).
…а пока путь таков:
/wp-includes/media.php
…пройдя по которому, нужно отыскать функцию:
/**
* Helper function to test if aspect ratios for two images match.
*
* @since 4.6.0
*
* @param int $source_width Width of the first image in pixels.
* @param int $source_height Height of the first image in pixels.
* @param int $target_width Width of the second image in pixels.
* @param int $target_height Height of the second image in pixels.
* @return bool True if aspect ratios match within 1px. False if not.
*/
function wp_image_matches_ratio( $source_width, $source_height, $target_width, $target_height ) {
/*
* To test for varying crops, we constrain the dimensions of the larger image
* to the dimensions of the smaller image and see if they match.
*/
if ( $source_width > $target_width ) {
$constrained_size = wp_constrain_dimensions( $source_width, $source_height, $target_width );
$expected_size = array( $target_width, $target_height );
} else {
$constrained_size = wp_constrain_dimensions( $target_width, $target_height, $source_width );
$expected_size = array( $source_width, $source_height );
}
// If the image dimensions are within 1px of the expected size, we consider it a match.
//if (is_numeric($constrained_size[0]) && is_numeric($expected_size[0])) { //это добавил
$matched = ( abs( $constrained_size[0] - $expected_size[0] ) <= 1 && abs( $constrained_size[1] - $expected_size[1] ) <= 1 );
return $matched;
//это добавил - закр. скобка }
}
Сама функция (ниже её имя): добавлена в WP 4.6 для коррекции и сверки параметров медиафайлов, скажем так, в свете сегодняшней темы:
function wp_image_matches_ratio( $source_width, $source_height, $target_width, $target_height )
призвана как:
Helper function to test if aspect ratios for two images match –
Вспомогательная функция для проверки, если пропорции двух картинок совпадают…
…и возвращает: return bool
True if aspect ratios match within 1px. False if not. –
true, если соотношения сторон совпадают 1px. false если нет.
И вот, коли какие-то несоответствия размеров обнаружены в связке ядра шаблона и ядра же вордпресс, выдаётся предупреждение.
В этом случае перехода на более свежую версию php стоит решать: оставаться ли на прежней, либо идти в ногу со временем, т.е обновиться до 7.1. Я всегда обновляюсь!
Однако более глубоко разбираться со всякими “непонятностями”, правильнее где-нить на тестовом сайте: так мы и поступим.
А рабочие площадки стоит избавить от назойливой подсказки разработчику, но при этом оставить на новейшей 7.1 версии php! и наблюдать за совместимостью в процессе… мало ли что ещё!
Значит, для того, чтобы читатели сайта не пугались странных фраз (пока мы подгоняем наш сайт к обнове…)… нужно всего-то выключить “предупреждение отработки php!”.
Вот те строки из показанной выше функции, которые нужно подредактировать:
}
//If the image dimensions are within 1px of the expected size, we consider it a match.
if (is_numeric($constrained_size[0]) && is_numeric($expected_size[0])) { //это добавил
$matched = ( abs( $constrained_size[0] - $expected_size[0] ) <= 1 && abs( $constrained_size[1] - $expected_size[1] ) <= 1 );
return $matched;
}
} //это добавил
Т.е перед строкой:
$matched = ( abs( $constrained_size[0] - $expected_size[0] ) <= 1 && abs( $constrained_size[1] - $expected_size[1] ) <= 1 );
нужно дописать эту (условие):
if (is_numeric($constrained_size[0]) && is_numeric($expected_size[0])) {
…и не забываем о закрывающей условие фигурной скобке! на фотке строка 652.
Можете перекопировать функцию и просто раскомментировать в показанном примере строку и закрывающую скобку. Всё тут же заработает!
как отключить проверку не числовых значений в wp-config.php
Этот способ наиболее логичен и правилен, ибо в этом случае мы правим файлы касаемые только нашего сайта – не ядра WP. Таким образом наши правки вне зависимости от обнов ВП!
Надлежит открыть файл wp_config.php (находится в корне сайта, там же где и robots.txt или .htaccess) и подредактировать условия константы “Дебаг” (WP_DEBUG), чтобы отключить вывод предупреждения!
Итак:
wp-config.php
домен.ru/wp-config.php
Тут дело вот в чём: файл конфигурации у нас всех может незначительно отличаться… потому что некоторые админы добавляют какие-то удобные для себя разрешения и пр…
Словом, отыщите у себя в файле строку
define('WP_DEBUG', false);
строка должна быть! …и допишите прямо под ней “запрет” на вывод предупреждения-сообщения @ini_set(‘display_errors’, 0);
define('WP_DEBUG', false);
@ini_set('display_errors', 0);// ДОБАВИМ эту строку - отключим проверку
/** выдаётся ошибка в версии php 7.1 говорит о том что в операциях используются не числовые значения: проверка, например, миниатюр - картинки */
Либо же, если по каким-то странным причинам, Дебаг не отыскали – дописывайте обе строки…
define('WP_DEBUG', false);
@ini_set('display_errors', 0);
У меня строки даны в таком варианте! однако – замечу: false
равно 0
и наоборот. Так что можно записать в обеих строках false – false или 0 – 0.
Этим, как понимаете, мы запрещаем вывод предупреждения “A non-numeric value encountered in…“…
Кое-что о константах WP можно почитать здесь…
О том, как вообще включается поддержка более новой версии php на хостинге, я писал в этой статье…
На этих нотах нонешней музыки, пожалуй, закончу.
…если что-то не ясно, задавайте вопросы в комментариях…
Online консультация по настройкам и созданию сайтов на WordPress
...А мне остаётся только раскланяться... и пожелать полезной работы в сети
...город веб мастеров Михалика.ru © - запросто с WordPress - ATs media squad
mihalica.ru !