Как добавить div в последний пост и каждый пятый пост - PullRequest
0 голосов
/ 14 октября 2019

Цикл, который в настоящее время настроен на добавление «обзора» к каждой 5-й публикации проекта, я бы хотел сделать это и добавить «обзор» после последнего сообщения. Например, если имеется 13 сообщений, после 5-го, 10-го и 13-го сообщения добавляется «обзор».

Я попытался подсчитать количество постов и добавить его в качестве оператора «или», однако он просто пытается добавить «обзор» после каждого сообщения.

<?php
/**
 * Template Name: Work
 *
 * This template display content at full with, with no sidebars.
 * Please note that this is the WordPress construct of pages and that other 'pages' on your WordPress site will use a different template.
 *
 * @package some_like_it_neat
 */

get_header(); ?>


<div class="content-area">
    <section class="work not-home work-content page-content ">
        <div class="row page-header">
            <h1><?php echo get_field('page_title', get_the_ID()); ?></h1>
            <div class="work-page-content">
                <?php echo get_field('page_content', get_the_ID()); ?>
            </div>
        </div>

        <div class="project-section">
            <div class="row">
                <?php 
                $posts = get_posts();
                $count = count($posts); 

                $args = array(
                    'post_type' => 'work',
                    'posts_per_page' => -1
                );
                $q = new WP_Query( $args );

                $posts_iterator = 0; //set to last to display first icon
                $icon_iterator = 0;
                $is_right = true;
                $review_iterator = 0;



                $icons = get_field('icons', get_the_ID());
                $reviews = get_field('reviews', get_the_ID());

                $true_reviews = get_sub_field('rave_review', get_the_ID());

                ?>

                <?php if ( $q->have_posts() ): ?>
                <div class="works">
                    <?php while ( $q->have_posts() ): $q->the_post(); ?>
                        <div class="featured-work">
                            <?php if($posts_iterator == 0): ?>
                                <div style="text-align: <?php echo $is_right ? 'right' : 'left' ?>;">
                                    <img class="work-icon" src="<?php echo $icons[$icon_iterator]['icon_image'] ?>" />
                                </div>
                            <?php 
                                $icon_iterator++;
                                if ( $is_right ) {
                                    $is_right = false;
                                } else {
                                    $is_right = true;
                                }
                                if( $icon_iterator == count($icons)) {
                                    $icon_iterator = 0;
                                }

                                endif; 
                            ?>
                            <a class="lazy featured-work__link arrow-hover" href="<?php the_permalink(); ?>">
                                <div class="project-panel">
                                    <div class="featured-work-img">
                                        <img src="<?php the_field('home_image'); ?>">
                                    </div>
                                    <div class="featured-work-spacer">
                                        &nbsp;
                                    </div>
                                    <div class="featured-work-text match">
                                        <div class="featured-work-text-inner">
                                            <p class="categories"><?php the_field('category'); ?></p>
                                            <h3 class="project-name link-arrow"><?php the_title(); ?></h3>
                                        </div>
                                    </div>
                                </div>

                            </a>
                        </div>




                        <?php if($posts_iterator == 4 && $review_iterator != count($reviews) ) : ?>
                            <div class="rave-review work-content__text-wrap">
                                <div class="review-inner">
                                    <p><?php echo $reviews[$review_iterator]['reviewer_copy'] ?></p>
                                </div>
                                <div class="reviewer-info">
                                    <p>
                                        <span class="reviewer-name"><?php echo $reviews[$review_iterator]['reviewer_name'] ?></span>
                                        <span class="reviewer-title"><?php echo $reviews[$review_iterator]['reviewer_title'] ?></span>
                                        <span class="reviewer-company"><?php echo $reviews[$review_iterator]['reviewer_company'] ?></span>
                                    </p>
                                </div>
                            </div>
                        <?php 
                            $review_iterator++;
                            endif;
                        ?>



                    <?php
                        if( $posts_iterator == 4 ) {
                            $posts_iterator = 0;

                        } else {
                            $posts_iterator++; 

                        }
                        endwhile;
                    ?>

                </div>
                <?php endif; ?>
            </div>
        </div>
    </section>


</div><!-- #primary -->

<?php get_footer(); ?>

1 Ответ

2 голосов
/ 14 октября 2019

Есть несколько способов добиться этого, но в основном вы хотите использовать по модулю в конце цикла, чтобы избежать дублирования.

Допустим, у вас есть цикл ссчетчик и этот цикл делает 10, 15 или 20 итераций. В конце цикла (вне цикла) вы хотите проверить этот счетчик:

echo $counter % 5 === 0 ? '' : $lastReview;

Если остаток от $ counter, разделенный на 5, равен 0, ваш php не будет отображать отзыв, в противном случае,это будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...