我有一个网站需要更新,它运行的是旧版本的ACF(4.4.1)。我不得不买一个新版本的ACF,因为我们没有旧版本的好拷贝。因此,当我更新图像时,图像字段停止工作。我认为可能发生了代码更改,但我不知道。
有人能帮我升级此代码,使其与ACF 5.3.7兼容吗?
<?php
if (get_field(\'slideshow\')) :
$repeater = get_field(\'slideshow\');
foreach( $repeater as $key => $row ) {
$column_id[ $key ] = $key;
}
array_multisort( $column_id, SORT_ASC, $repeater );
foreach( $repeater as $i => $row ) {
$size = get_field(\'slideshow_size\') ?: \'Panoramic\';
$column_id[ $i ] = $row[\'slideshow-image\'][\'id\'];
$showcontrols = $active ? true: null;
$active = (!$active) ? \' active\' : \' \' ;
$controls[$i] = \'<li data-target="#myCarousel" data-slide-to="\'.$i.\'" class="\'.$active.\'"></li>\';
$image = $repeater[$i][\'slideshow-image\'][\'sizes\'][$size];
$imgs[$i] = \'<div class="item\'.$active.\'"><div style="overflow:hidden;border-radius:5px;border: 1px solid #987d2b;"><img src="\'.$image.\'"></div></div>\';
}
?>
<div id="myCarousel" class="carousel slide">
<ol class="carousel-indicators">
<?php if($showcontrols): foreach ($controls as $control) { echo $control; } endif; ?>
</ol>
<div class="carousel-inner">
<?php foreach ($imgs as $img) { echo $img; } ?>
</div>
<?php if ($showcontrols): ?>
<a class="carousel-control left" href="#myCarousel" data-slide="prev">‹</a>
<a class="carousel-control right" href="#myCarousel" data-slide="next">›</a>
<?php endif; ?>
</div>
<?php endif; ?>
在wordpress后端,我看到字段组显示旧ACF中的图像返回图像对象,但现在它返回图像数组。
幻灯片功能在这两个网站上都起作用,但在新网站上,当它加载到前端时,只是返回“”作为图像url。
最合适的回答,由SO网友:ngearing 整理而成
我将您的代码复制到我的一个站点,以使用ACF版本5.3.9.2进行测试。这对我来说很有效,我只需要确保字段名和图像大小是正确的。
$size = get_field(\'slideshow_size\') ?: \'Panoramic\'; // Make sure this size exists, and usually is all lower case.
$column_id[ $i ] = $row[\'slideshow-image\'][\'id\']; // Field names in ACF normally have an under score _ not a dash -
$image = $repeater[$i][\'slideshow_image\'][\'sizes\'][$size]; // Same here
所以,只要检查这三件事,我相信应该就是这样!