【问题标题】:How to add div to the last post and every 5th post如何将 div 添加到最后一个帖子和每 5 个帖子
【发布时间】:2019-10-14 14:49:12
【问题描述】:

当前设置为每 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(); ?>

【问题讨论】:

    标签: php wordpress loops


    【解决方案1】:

    有很多方法可以实现这一点,但基本上您希望在循环结束时使用modulo 以避免重复。

    假设您有一个带有计数器的循环,并且该循环执行 10、15 或 20 次迭代。在循环结束时(循环外),您要检查该计数器:

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

    如果 $counter 除以 5 的余数等于 0,则 php 不会回显评论,否则会。

    【讨论】:

    • 这确实有助于最终使用您提供的代码将其作为 if 语句。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2023-03-25
    • 2011-03-14
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多