在旧站点上升级ACF(高级自定义字段)

时间:2016-07-07 作者:rudtek

我有一个网站需要更新,它运行的是旧版本的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">&lsaquo;</a>
  <a class="carousel-control right" href="#myCarousel" data-slide="next">&rsaquo;</a>
  <?php endif; ?>
</div>
<?php endif; ?>
在wordpress后端,我看到字段组显示旧ACF中的图像返回图像对象,但现在它返回图像数组。

幻灯片功能在这两个网站上都起作用,但在新网站上,当它加载到前端时,只是返回“”作为图像url。

1 个回复
最合适的回答,由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
所以,只要检查这三件事,我相信应该就是这样!

相关推荐

有没有办法为一个博客运行upgrade.php?

我今天刚运行了verion 3.9的自动更新,但“网络更新”有问题。我似乎有防火墙或网络问题,出现以下错误:您的服务器可能无法连接到其上运行的站点。错误消息:无法连接到主机不管怎样,有没有办法在每个博客上运行数据库更新?我可以使用特殊的URL吗?我可以从shell命令行执行吗?在一个旧的论坛帖子上,有人建议更新。php在您第一次登录博客管理员时自动运行(即使尚未运行网络更新)。我想知道这是不是真的。谢谢