使用高级自定义域创建每页滑块

时间:2016-08-18 作者:user53340

我希望创建一个滑块,使用ACF在每个页面上显示一个单独的滑块,该页面有自己的图像加载到gallery字段中。

目前,我使用flexslider创建了滑块,并成功地获得了要显示的图像,但问题是,所有图像都显示在具有图像集的每个页面上。所以第1页有图像1,这只显示在第1页上(没有其他页面),这就是我想要的。但是,如果将图像添加到第2页,则第1页和第2页都会显示带有图像1和2的滑块。我需要有单独的幻灯片图像为每个单独的页面,我需要滑块不显示,如果没有图像设置在一个页面上。我希望一切都有意义。这是我目前掌握的代码:

<div id="featured" class="flexslider clearfix">

                         <ul class="slides">

                                 <?php
                                 $args = array(
                                 \'post_type\' => \'page\',
                                 );

                                 $the_query = new WP_Query($args);

                                 ?>

                                 <?php if (have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?>

                                         <?php

                                         $images = get_field(\'slider_image\');

                                         if ($images): ?>

                                         <?php foreach ($images as $image): ?>
                                                 <li>
                                                         <img src="<?php echo $image[\'url\']; ?>">
                                                 </li>
                                         <?php endforeach; ?>

                                         <?php endif; ?>

                                         <?php endwhile; endif;?>

                                 </ul>

                 </div>
任何帮助都将不胜感激。我猜我需要按id或其他方式循环页面,但我对PHP非常陌生,所以我不完全确定。谢谢

1 个回复
最合适的回答,由SO网友:Tarik Causevic 整理而成

对于想要实现的目标,根本不需要循环。第1页和第2页都显示所有图像,因为您可以查询站点上的所有页面,然后从每个“slider\\u image”ACF字段中获取所有图像,并将它们放入foreach循环。

当您从任何字段获取值时,默认情况下它将获取当前页面的值,因此您无需传递任何其他ID,因为这是默认行为。

如果我理解正确,您需要的是可以在文档中找到的基本循环https://www.advancedcustomfields.com/resources/gallery/

<?php 

$images = get_field(\'slider_image\');

if( $images ): ?>
  <div id="featured" class="flexslider clearfix">
    <ul class="slides">
        <?php foreach( $images as $image ): ?>
            <li>
                     <img src="<?php echo $image[\'url\']; ?>" width="<?php echo $image[\'width\']; ?>" height="<?php echo $image[\'height\']; ?>" alt="<?php echo $image[\'alt\']; ?>" />
            </li>
        <?php endforeach; ?>
    </ul>
  </div>
<?php endif; ?>
零件if( $images ): 检查$图像是否包含任何值。如果不是,则该If中的任何内容都不会显示在页面上。也将输入if,这样页面上就不会有空div。

编辑:刚刚看到关于钩子的评论。然后您必须添加一个变量来获取当前页面的IDget_the_ID 并将该ID作为第二个参数传递到get\\u字段。这应确保您始终获得当前页面,其余页面应如上所述工作。