你以为get_field
将始终返回图像,but what if there are no images to return?
$images = get_field(\'fl_gallery\');
$image = $images[$no];
代码从不检查
$images
查看它是空的还是错误值。
最重要的是,如果它返回了图像,但返回了3个图像,并且$no
是4吗?如果没有警告,您无法访问不存在的内容,you have to check first. 这就是为什么您会收到PHP警告。
例如:
if ( empty( $images ) ) {
// no images!
}
if ( empty( $images[$no] ) ) {
// that image doesn\'t exist
}
但是,您正在使用
get_field
这是一个ACF API,而不是WordPress API。您需要参考ACF文档,了解该函数在遇到问题时会执行什么操作,以及如何处理错误。它可能根本不会返回数组,但会返回最终的HTML。
您还需要添加更多验证。例如[photo_shortcode no=9000]
或[photo_shortcodo no="-1"]
或[photo_shortcode no="0.5"]
都是数字,将生成这些PHP警告
旁注:extract
降低安全性,使代码无法被机器和工具读取,并可能意外覆盖变量,从而导致安全漏洞和bug。Never use it.