2015-01-01 2 views
-3

Внимание: деление на ноль в /home/content/p3nexnas06_data03/99/2164799/html/wp-content/themes/morpheus/template-sectioned.php на линии 102Предупреждение: Деление на ноль в Wordpress

Я начал получать это сообщение после удаления изображения из моей медиа-библиотеки. Вот что линия 102 и окружающие линии выглядят как из template-sectioned.php:

if (!empty($bgParallax)) { 
        $bgtype = get_post_meta($bgParallax, 'coll_bg_type', true); 
        switch ($bgtype) { 
         case 'image': 
          $bgImg = get_post_meta($bgParallax, 'coll_bg_img', true); 
          $dim = wp_get_attachment_image_src(coll_get_attachment_id($bgImg), 'full'); 
          $bg_output .= '<img class="coll-bg-image js-coll-lazy" 
            src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=" 
            width="' . $dim[1] . '" 
            height="' . $dim[2] . '" 
            data-coll-ar="' . $dim[1]/$dim[2] . '" //line 102 
            data-coll-src="' . $bgImg . '" 
            alt="bg image" />'; 

ЛИНИЯ 102:

data-coll-ar="' . $dim[1]/$dim[2] . '" 
+2

Используйте тернар, чтобы проверить, является ли '$ dim [2]! = 0', и если он установлен как' 0' -> 'data-coll-ar =" '. ($ Dim [2]! = 0? $ Dim [1]/$ dim [2]: 0). '' – Sean

+2

http://careers.stackoverflow.com/ –

+1

Вы не понимаете, что происходит или просто не знаете, как это исправить? – edtheprogrammerguy

ответ

4

Вы можете проверить, если это не 0 с тройным оператором:

//This line is extracted from the full assignment! (See the full assignment in OP's code) 
data-coll-ar="' . (($dim[2] !== 0) ? $dim[1]/$dim[2] : 0) . '" 
+2

Я бы попросил заплатить «первым» ;-) –

+1

Кстати, это было не так, что проголосовали, но я думаю Я понимаю, почему. Если вы не посмотрите внимательно на контекст, это выглядит так: выражение – andrew

+0

@andrew Никто не проголосовал, но это хороший звонок! Я уточню свой ответ, так что это очевидно, спасибо. – Rizier123

4

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

Согласно the docs, функция wp_get_attachment_image_src() возвращает это:

[0] => url 
[1] => width 
[2] => height 
[3] => boolean: true if $url is a resized image, false if it is the original. 

Так как это было предложено Rizier123, вы можете просто добавить отказоустойчивость сохранить, чтобы увидеть, если высота 0, и если да, то избежать деления на него и просто установите значение data-coll-ar вместо 0. Но это просто маскирует проблему. У вас будет изображение с высотой 0 и оно не появится на вашей веб-странице; и вы не знаете, имеет ли значение ширину значение, или же оно равно 0, или если что-то еще не так с данными.

Я бы в дополнение к исправлению Rizier123 добавлял ошибку, проверяя иерархию контекста либо на коммутатор, либо на обработчик переноса. Замените плохие изображения образ-заполнителем или убедитесь, что люди прикрепляют действительные изображения, прежде чем они даже попадут в вашу систему. Поместите некоторые интуитивные сообщения об ошибках на экране, чтобы помочь пользователю как можно раньше обеспечить качество данных.

+1

Это хорошее исследование! Очень хорошо – Rizier123

Смежные вопросы