PHP警告:Wordpress中的非法字符串偏移

时间:2014-07-23 02:08:11

标签: php wordpress

我希望有人可以帮我弄清楚一些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;
}

提前感谢您的帮助!

热烈, 卡罗

2 个答案:

答案 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=""丢失了。