通常我只会将这种类型的内容放在模板中,但我提取内容的方式有点不同。我做了一个我一直有问题的短代码。它使用Foundation 5的“动态观察”滑块和ACF库。它挂在foreach
部分
// Add Shortcode
function custom_carousel($atts, $content = null) {
extract(
shortcode_atts(
array(), $atts));
$out1 = \'<ul class="orbit" data-orbit data-options="timer_speed:1500;">\';
$carouselimages = get_field(\'gallery\');
foreach ($carouselimages as $carouselimage) {
$output = \' <li class="text-center"> <img src="\' . $carouselimage[\'url\'] . \'" title="\' . $carouselimage[\'title\'] . \'" alt="\' . $carouselimage[\'alt\'] . \'" /></li>\';
}
$out3 = \'</ul>\';
return $out1 . $output . $out3;
}
add_shortcode(\'custom-carousel\', \'custom_carousel\');
我在模板中为该网站的移动版本使用此代码,该代码运行良好:
<?php
$carouselimages = get_field(\'gallery\');
if ($carouselimages) {
?>
<ul class="orbit" data-orbit data-options="timer_speed:1500;">
<?php foreach ($carouselimages as $carouselimage) { ?>
<li class="text-center">
<img src="<?php echo $carouselimage[\'url\']; ?>" title="<?php echo $carouselimage[\'title\']; ?>" alt="<?php echo $carouselimage[\'alt\']; ?>" />
<?php echo $carouselimage[\'description\']; ?>
</li>
<?php }; ?>
</ul>
<?php } ?>
最合适的回答,由SO网友:ScheRas 整理而成
首先-不要使用extract
. 这是一种非常糟糕的代码风格,而且在内核中也很差。
每次运行foreach循环时,都会重写$output
因为您为该变量分配了新内容。您想要的是将新列表项与现有列表项连接起来。这可以使用concatening赋值运算符完成:
$output .= \'<li class="text-center"> <img src="\' . $carouselimage[\'url\'] . \'" title="\' . $carouselimage[\'title\'] . \'" alt="\' . $carouselimage[\'alt\'] . \'" /></li>\';
$output
变量应在
foreach
陈述只需为其分配一个空字符串。