更新后的Wordpress“非法字符串偏移”
Posted
技术标签:
【中文标题】更新后的Wordpress“非法字符串偏移”【英文标题】:Wordpress 'Illegal string offset' after updates 【发布时间】:2019-06-12 18:23:57 【问题描述】:我的新客户有一个很久没有更新的网站。现在 php 版本、wordpress 版本和插件都是最新的,但是 Portifolio 项现在返回此错误:
截图:
警告:非法字符串偏移 'alt' in /home/elite856/public_html/wp-content/themes/eliteled/functions.php 上 第 679 行
警告:非法字符串偏移 'url' in /home/elite856/public_html/wp-content/themes/eliteled/functions.php 上 第 679 行
这是第 679 行:
'<img src="'. $ob_img['url'] .'" class="capa" />'.
这是整个功能:
$portfolio = new WP_Query( $args );
if( $portfolio->have_posts() )
while ( $portfolio->have_posts() ) $portfolio->the_post();
$ob_img = get_field( 'imagem_de_capa' );
$allcats = get_the_category( get_the_ID() );
$cat = $allcats[0]->name;
$arrayData = array(
'id' => get_the_ID(),
'Titulo' => get_the_title(),
'cat' => $cat
);
//Criando arrayData com as informações do portfolio
if( have_rows('conteudo_do_portfolio') )
while( have_rows('conteudo_do_portfolio') ) the_row();
$tipo = get_field( 'tipo' );
if( $tipo == 'foto' )
if( empty( $arrayData['imgs'] ) )
$arrayData['imgs'][] = array(
'full' => $ob_img['original_image']['url'],
'thumb' => wp_get_attachment_image_src( $ob_img['id'], 'thumb_portfolio' )[0]
);
$idImg = get_sub_field('foto');
$arrayData['imgs'][] = array(
'full' => wp_get_attachment_image_src( $idImg, 'full' )[0],
'thumb' => wp_get_attachment_image_src( $idImg, 'thumb_portfolio' )[0]
);
else
$idVideo = youtube_video_id( get_sub_field('video') );
$arrayData['imgs'][] = array(
'full' => $idVideo,
'thumb' => "http://img.youtube.com/vi/$idVideo/0.jpg"
);
//'<li class="'. ( is_home() || is_front_page() ? 'item-home' : '' ) .'">'
$conteudo .= '<li>'.
'<img src="'. $ob_img['url'] .'" class="capa" />'.
'<div class="camada text-center">'.
'<a href="#" class="openModalPortfolio" data-tipo="'. get_field( 'tipo' ) .'" data-json=\''. json_encode( $arrayData ) .' \'\ >'.
//'<div class="'. ( is_home() || is_front_page() ? 'center-home' : 'center' ) .'">'.
'<div class="center">'.
//'<img src="/wp-content/themes/eliteled/images/expand'. ( is_home() || is_front_page() ? '' : '-red' ) .'.png" class="expand" />'.
'<img src="/wp-content/themes/eliteled/images/expand-red.png" class="expand" />'.
'<span class="titulo">'. ( strlen( get_the_title() ) > 60 ? substr( get_the_title(), 0, 60 ) . '...' : get_the_title() ) .'</span>'.
'<span class="cat">'. $cat .'</span>'.
'</div>'.
'</a>'.
'</div>'.
'<div class="camada camada-branca"></div>'.
'</li>';
我已经读到这个警告在 PHP 5.4 之前不会像以前那样被打印出来,而且它发生是因为它在期待和数组。我的 PHP 技能很少,有人可以告诉我该怎么做吗?
【问题讨论】:
尝试var_dump($ob_img)
看看它包含什么。
string(48) ""original_image":"6585","cropped_image":"6585""
那么 $ob_img['url']
和 $ob_img['alt']
不存在。这就是 PHP 显示该消息的原因。
那我该怎么办?在我更新之前它正在工作
【参考方案1】:
根据转储的数据,我猜original_image
的内容是附件ID,所以试试这个:
$img_params = json_decode($ob_img, true); // convert string to associative array
$url = wp_get_attachment_image_url($img_params['original_image']);
if ($url)
// we have the image url now so display the image here tag here
如果它不起作用,请检查原始主题/插件开发人员是否对该组合来自的插件/主题有新的更新
【讨论】:
抱歉,我可能真的缺乏这方面的知识......我应该在代码中的哪个位置使用您的建议?我似乎无法让它工作。以上是关于更新后的Wordpress“非法字符串偏移”的主要内容,如果未能解决你的问题,请参考以下文章