我正在创建一个短代码来显示不同大小的图像:大、小和常规。用户可以选择设置large="true"
或small="true"
在编写短代码以输出正确的图像代码时。
当短代码处于活动状态时,我在前端遇到了一个PHP问题,下面的消息是large
和/或small
未设置为true或false:
注意:未定义索引:大in/wp-content/themes/mysite/functions。php在线1449
注意:未定义的索引:在/wp content/themes/mysite/functions中较大。php在线1451
第1449行为if( $atts[\'large\'] == true )
1451号线是if( $atts[\'small\'] == true )
以下是短代码的PHP代码:
add_shortcode ("img", "img_output");
function img_output($atts, $content="null") {
extract( shortcode_atts( array(
\'large\' => false,
\'small\' => false,
\'url\' => \'\'
), $atts ));
if( $atts[\'large\'] == true ) {
return \'<img src="\' . $url . \'" class="img-large" width="100%" height="auto" />\';
} else if( $atts[\'small\'] == true ) {
return \'<img src="\' . $url . \'" class="img-small" width="100%" height="auto" />\';
} else {
return \'<img src="\' . $url . \'" class="img-regular" width="100%" height="auto" />\';
}
}
任何帮助都将不胜感激,谢谢!
最合适的回答,由SO网友:Jacob Peattie 整理而成
因为如果用户输入large="true"
, 然后$atts[\'small\']
未定义。通常的解决方案是使用shortcode_atts()
设置参数的默认值,但您不会将shortcode_atts()
进入$atts
, 你只是在提取它。这意味着$small
将定义,但$atts[\'small\']
不会的。
解决这个问题的正确方法是shortcode_atts()
转换为变量:
$atts = shortcode_atts( array(
\'large\' => false,
\'small\' => false,
\'url\' => \'\'
), $atts );
另一方面,它有一个
size=""
属性,带有
small
或
large
尽可能多的值,而不是每个大小的单独属性,可能更容易管理。