我希望有人可以帮我弄清楚一些PHP错误可能会发生什么。他们读的是这样的:
“警告:第440行/home/awh/public_html/wp-content/themes/Avada/shortcodes.php中的非法字符串偏移'类型'
'有罪行'是440,445,448,453,我在下面的代码中标记了这些行(希望没问题?)
网站是www.advancewithhealth.com,错误似乎是由于滑块PHP代码中的一些错误而产生的(这是一个家庭朋友所以我不确定她可能会意外地发生了什么变化)。我在下面列出了有罪的一行:
//////////////////////////////////////////////////////////////////
// Slide
//////////////////////////////////////////////////////////////////
add_shortcode('slide', 'shortcode_slide');
function shortcode_slide($atts, $content = null) {
$str = '';
if($atts['type'] == 'video') { // <-- 440
$str .= '<li class="video">';
} else {
$str .= '<li class="image">';
}
if($atts['link']): // <-- 445
$str .= '<a href="'.$atts['link'].'">';
endif;
if($atts['type'] == 'video') { // <-- 448
$str .= $content;
} else {
$str .= '<img src="'.$content.'" alt="" />';
}
if($atts['link']): // <-- 453
$str .= '</a>';
endif;
$str .= '</li>';
return $str;
}
提前感谢您的帮助!
热烈, 卡罗
答案 0 :(得分:4)
这种情况正在发生,因为您没有将type
属性传递给短代码的参数。您可以使用以下命令来避免错误:
[slide type='video'/]
也就是说,correct way to account for this programmatically and reliably是使用shortcode_atts()
函数在$atts
数组上设置默认值。
// the default $atts values
$defaults = array( 'type' => 'default value' );
// use array merge to override values in $defaults with those in $atts
$atts = shortcode_atts( $defaults, $atts );
// now the index will be set even if it wasn't passed into the shortcode
if( $atts['type'] == 'video' ) {
如果您不想设置任何默认值(即使您可以默认为false
或其他),您也可以在使用{{3}访问之前检查是否在阵列上设置了索引}。我建议使用上面的方法。
if( isset( $atts['type'] ) && $atts['type'] == 'video' ) {
答案 1 :(得分:0)
今天我遇到了同样的问题,我通过更改调用滑块的代码来解决它:
[slider][slide link=""]image link[/slide][slide link=""]image link here[/slide][/slider]
在我的情况下,link=""
丢失了。