Поэтому я работаю с плагином Advanced Custom Fields для WordPress 4.1.1 и создал 4 настраиваемых поля: «topIMG», «leftIMG», «centerIMG», «rightIMG». Я сделал их изображения, чтобы я мог добавить больше изображений в пост и разместить их в определенной области на моей странице.
Поэтому изначально я хотел показать только одно изображение, чтобы оно заработало, и это был мой код для отображения одного изображения:
<?php
$image = get_field('topimg');
$link = get_field('link', $image['id']);
?>
<div class="images">
<section id="topIMG">
<img src="<?php echo $image['url']; ?>" />
</section>
</div>
Это работает и отображает изображение. Теперь я попытался создать цикл foreach, чтобы также отображать остальные изображения. Вот этот код:
<?php
$array = array('topimg', 'leftimg', 'centerimg', 'rightimg');
$image = get_field($array);
$link = get_field('link', $image['id']);
$output = '<div class="images">';
foreach($image as $image) {
$output .= '<section id='.$array.'>';
$output .= '<img src='.$link.'>';
$output .= '</section>';
}
$output .= '</div>';
echo $output;
?>
Когда я просматриваю это на сайте, я получаю ошибки и не уверен, как правильно отображать эти изображения. Помощь очень ценится.
Ошибки, которые я вижу:
Предупреждение: substr () ожидает, что параметр 1 будет строкой, а массив указан в /home1/rlebo59/public_html/dev/wp-content/plugins/advanced-custom-fields/core/api.php в строке 268
Предупреждение: Недопустимый тип смещения в isset или пустой в /home1/rlebo59/public_html/dev/wp-includes/meta.php в строке 499
Предупреждение: неверный аргумент указан для foreach () в /home1/rlebo59/public_html/dev/wp-content/themes/RyanPortfolio/single.php в строке 17
Вы должны перебрать этот массив, чтобы использовать каждое из изображений:
<?php
$array = array('topimg', 'leftimg', 'centerimg', 'rightimg');
$output = '<div class="images">';
foreach($array as $v){
$image = get_field($v);
if($v == 'centerimg'){
$link = $image['value'];
}else{
$link = $image['value']['url'];
}
$output .= '<section id='.$v.'>';
$output .= '<img src='.$link.' />';
$output .= '</section>';
}
$output .= '</div>';
echo $output;
?>
Других решений пока нет …