警告:在Wordpress中除以零

时间:2015-01-01 22:24:22

标签: php

  

警告:在第102行的/home/content/p3nexnas06_data03/99/2164799/html/wp-content/themes/morpheus/template-sectioned.php中除以零

从媒体库中删除图片后,我开始收到此消息。以下是第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 个答案:

答案 0 :(得分: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 ) . '"

答案 1 :(得分:4)

这个答案并不是一个快速解决方案,而是OP想要的。 投票支持Rizier123的答案。这是一个背驮式,所以请保留Rizier123的投票代表。

根据the docswp_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补丁之外,我还会将上下文层次结构的错误检查添加到交换机或上传处理程序中。使用占位符图像替换坏图像,或确保人们在进入系统之前附加有效图像。在屏幕上放置一些直观的错误消息,以指导用户尽早执行质量数据。