注意:正在尝试获取BodyCenter中非对象的属性

时间:2019-07-05 作者:shashi sawardekar

在wp\\U调试模式下测试我的主题时,我在前端生成以下通知。

我可以看到问题所在,但不知道如何解决此问题?

错误显示在下面的通知中。

注意:正在尝试获取/home/wp-content/plugins/bodycenter-shortcode/shortcode-woo/templates/sns\\u-cat\\u-info中非对象的属性。php第20行

可捕获的致命错误:类WP\\u error的对象无法转换为/home/WP content/plugins/bodycenter短代码/短代码woo/templates/sns\\u cat\\u info中的字符串。php第29行

<?php
$output = \'\';
$atts = vc_map_get_attributes( \'sns_cat_info\', $atts );
extract( $atts );
if( class_exists(\'WooCommerce\') ){
    $uq = rand().time();
    $class = \'sns-cat-info\';
    // $class .= ( esc_attr($style) !=\'\' )?\' style-\'.esc_attr($style):\'\';
    $class .= ( trim(esc_attr($extra_class))!=\'\' )?\' \'.esc_attr($extra_class):\'\';
    $class .= \' \'.esc_attr( bodycenter_getCSSAnimation( $css_animation ) );
    if ( $info_want == \'3\' ) {
        $class .= \' show-btn-shopnow\';
    }elseif ( $info_want == \'4\' ) {
        $class .= \' show-btn-seeall\';
    }
    $l_href = $l_name = $l_target = \'_self\' ;
    if ( $r_type == \'1\' ){
        $cat_info = get_term_by(\'slug\', $cat, \'product_cat\');
        $l_href = get_term_link($cat, \'product_cat\');
        $l_name = trim($ctitle) != \'\' ? $ctitle : $cat_info->name;
        $l_target = \'_self\';
    }elseif ($r_type == \'2\' && !empty( $clink ) ) {
        $clink = vc_build_link( $clink );
        $l_href = $clink[\'url\'];
        $l_name = $clink[\'title\'] ? esc_attr( $clink[\'title\'] ) : esc_html__(\'You should enter title\', \'bodycenter-shortcodes\');
        $l_target = esc_attr( $clink[\'target\'] ) ;
    }
    $output .= \'<div class="\'.$class.\'">\';
    $output .= \'<a class="cat-img" href="\'.$l_href.\'">\';
    if($cat_image != \'\'){
        $cat_image = preg_replace(\'/[^\\d]/\', \'\', $cat_image);
        $img =   wp_get_attachment_image_src( $cat_image , \'\');
        $output .= \'<img src="\'.$img[0].\'" alt="\'.$l_name.\'" />\';
    }
    $output .= \'</a>\';
    $output .= \'<div class="cat-info">\';
    $output .= \'<h4 class="cat-title"><a class="second-font" href="\'.$l_href.\'" target="\'.$l_target.\'">\'.$l_name.\'</a>\';
    if ( $info_want == \'4\' ){
        $output .= \'<a class="btn-seeall" href="\'.$l_href.\'">\' . esc_html__(\'See all\', \'bodycenter-shortcodes\') . \'</a>\';
    }
    $output .= \'</h4>\';
    if ( $info_want == \'1\' ){
        $output .= \'<span class="cat-prd-num">\'.$cat_info->count. \' \' . esc_html__(\'Products\', \'bodycenter-shortcodes\') .\'</span>\';
    }else if ( $info_want == \'2\' ){
        $output .= \'<span class="jf-price second-font">\' . esc_html__(\'Just from\', \'bodycenter-shortcodes\') .\' <span class="price-num">\'.$jf_price.\'</span></span>\';
    }
    $output .= \'</div>\';
    if ( $info_want == \'3\' ){
        $output .= \'<div class="btn-wrap"><a class="btn-shopnow button" href="\'.$l_href.\'">\' . esc_html__(\'Shop now\', \'bodycenter-shortcodes\') . \'</a></div>\';
    }
    $output .= \'</div>\';
}
echo $output;

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

问题是这一行:

$cat_info = get_term_by(\'slug\', $cat, \'product_cat\');
你想按slug分类,但是$cat 未定义,所以$cat_infofalse, 这意味着这条线:

$l_name = trim($ctitle) != \'\' ? $ctitle : $cat_info->name;
正在引发第一个错误,因为您无法访问->name 在…上false.

在这一行:

$l_href = get_term_link($cat, \'product_cat\');
$l_href 正在成为WP_Error 对象,因为(&M);再次&mdash;$cat 不存在。这意味着:

$output .= \'<a class="cat-img" href="\'.$l_href.\'">\';
正在引发第二个错误,因为您无法连接WP_Error 对象转换为字符串。

相关推荐

为什么dbDelta()不能捕获MysqlErrors?

据我所见,dbDelta() 用于抑制在其操作过程中发生的数据库错误。一般来说,情况似乎是这样,但New Relic仍在报告函数中的MysqlErrors。准确的错误消息格式如下:MysqlError: Table \'xxx.wp_yyy_posts\' doesn\'t exist 发件人dbDelta() 在里面/wp-admin/includes/upgrade.php, 我们有:// Fetch the table column structure from the database&