L oop через галерею изображений в блоге и отображать изображения в отдельных div - PullRequest
0 голосов
/ 18 марта 2020

У меня есть пользовательский тип сообщения с пользовательскими сообщениями в блоге. У меня есть страница со списком всех постов, конечно. В каждом посте плитки реализован скользящий слайдер. И что мне нужно сделать, это показать все изображения из галереи в посте в этом скользком слайдере. Это не проблема. Я сделал это по этому коду:

<?php
                    while ( have_posts() ) : the_post();
                        if ( get_post_gallery() ) :
                            $gallery = get_post_gallery( get_the_ID(), false );
                            foreach( $gallery['src'] AS $src )
                            {
                            ?>
                                <div style="width: 100%;">
                                <a href="<?php echo $src; ?>" class="fancybox"><img class="img-fluid" src="<?php echo $src; ?>" alt=""></a>
                                </div>
                            <?php
                            }
                        endif;
                    endwhile;
                ?>

Проблема в том, когда я добавляю второй пост с разными изображениями. Тогда на всех двух скользящих слайдерах есть изображения из двух галерей из двух разных постов. Как я могу определить эту разницу в этом l oop?

Также важно, чтобы плитки отображались поочередно. У первого есть текст слева, скользкий ползунок справа, у второго - текст справа, гладкий ползунок слева, третий - как у первого, четвертый - у второго. и др c. Поэтому я использовал вышеупомянутый l oop дважды.

Полный код страницы:

 <?php $loop = new WP_Query( array( 'post_type'=>'journal', 'orderby'=>'post_id', 'order'=>'DESC' ) ); ?>
    <?php if ( $loop->have_posts() ) : $i=0; ?>
    <?php while ( $loop->have_posts() ) : $loop->the_post(); $i++; ?>
        <div class="post-tile">
        <?php if( $i % 2 ) : ?>
        <div class="row align-items-center"> <!-- tile with text on left, slider on right -->
            <div class="col-lg-6">
                <div class="inner">
                    <h2 class="title"><?php the_title(); ?></h2>
                    <h3 class="etap"><?php the_field('etap') ?></h3>
                    <div class="content">
                        <?php the_excerpt(); ?>
                    </div>
                </div>
                <div class="slider-arrows">
                    <div class="slick-prev-custom slick-arrow" id="slickBuildingPrev">
                        <img src="<?php bloginfo('template_directory') ?>/assets/img/prev.png" alt="" class="img-fluid">
                    </div>
                    <div class="slick-next-custom slick-arrow" id="slickBuildingNext">
                        <img src="<?php bloginfo('template_directory') ?>/assets/img/next.png" alt="" class="img-fluid">
                    </div>
                </div>
            </div>
            <div class="col-lg-6">
                <div class="building-slick">
                <?php
                    while ( have_posts() ) : the_post();
                        if ( get_post_gallery() ) :
                            $gallery = get_post_gallery( get_the_ID(), false );
                            foreach( $gallery['src'] AS $src )
                            {
                            ?>
                                <div style="width: 100%;">
                                <a href="<?php echo $src; ?>" class="fancybox"><img class="img-fluid" src="<?php echo $src; ?>" alt=""></a>
                                </div>
                            <?php
                            }
                        endif;
                    endwhile;
                ?>
                </div>
            </div>
        </div>
        <?php else : ?> <!-- tile with text on right, slider on left -->
        <div class="row align-items-center flex-column-reverse flex-lg-row">
            <div class="col-lg-6">
                <div class="building-slick">
                <?php
                    while ( have_posts() ) : the_post();
                        if ( get_post_gallery() ) :
                            $gallery = get_post_gallery( get_the_ID(), false );
                            foreach( $gallery['src'] AS $src )
                            {
                            ?>
                                <div style="width: 100%;">
                                <a href="<?php echo $src; ?>" class="fancybox"><img class="img-fluid" src="<?php echo $src; ?>" alt=""></a>
                                </div>
                            <?php
                            }
                        endif;
                    endwhile;
                ?>
                </div>
            </div>
            <div class="col-lg-6">
                <div class="inner">
                    <h2 class="title"><?php the_title(); ?></h2>
                    <h3 class="etap"><?php the_field('etap') ?></h3>
                    <div class="content">
                        <?php the_excerpt(); ?>
                    </div>
                </div>
                <div class="slider-arrows">
                    <div class="slick-prev-custom slick-arrow" id="slickBuildingPrev">
                        <img src="<?php bloginfo('template_directory') ?>/assets/img/prev.png" alt="" class="img-fluid">
                    </div>
                    <div class="slick-next-custom slick-arrow" id="slickBuildingNext">
                        <img src="<?php bloginfo('template_directory') ?>/assets/img/next.png" alt="" class="img-fluid">
                    </div>
                </div>
            </div>
        </div>
        <?php endif; ?>
        </div>
    <?php endwhile; wp_reset_query(); ?>
    <?php endif; ?>

1 Ответ

0 голосов
/ 18 марта 2020

Я разобрался с другими топи c. Просто заменил мой l oop на это:

<?php
                    if ( get_post_gallery() ) {

                        $gallery        = get_post_gallery( get_the_ID(), false );
                        $galleryIDS     = $gallery['ids'];
                        $pieces         = explode(",", $galleryIDS);

                        foreach ($pieces as $key => $value ) { 

                            $image_medium   = wp_get_attachment_image_src( $value, 'medium'); 
                            $image_full     = wp_get_attachment_image_src( $value, 'full'); 
                        ?>


                        <div>
                            <img src="<?php echo $image_full[0] ?>"/>
                        </div>
                        <?php 
                        }
                    }
                ?>
...