在 Wordpress 的循环中创建一个循环,以显示 12 个帖子,每组两个包含在单独的 div 中



我希望你们中的一位Wordpress大师可以在这里帮助我。

我正在尝试在一个循环内创建一个循环,该循环在 12 行中呈现 6 个帖子。在每行中,您有 2 个div。每个div 旨在显示一个帖子标题。循环贯穿所有 12 个帖子并正确分组 - 6 个div,其中 2 个帖子。每个帖子都有自己独特的标题。

我已经设法让循环将 12 个帖子分解为 6 个div,每个帖子中有两个内部div。但是我无法让内部div 遍历所有帖子。相反,他们只是在循环前两个。

所以我最终得到的是 6 行,每行有两个div。但只有前两个帖子在所有行中不断重复出现。我在这里做错了什么?

<!--TESTER -->
<!--TESTER -->
<!--TESTER -->
        <div class="section section-testimonials">
            <?php
                $args=array(
                'post_type' => 'testimonial'
                );
                $query = null;
                $query = new WP_Query($args);
                if( $query -> have_posts() ) {
                    echo '';
                $i = 0;
                while ($query -> have_posts()) : $query->the_post();
                    if($i % 2 == 0) { ?>
                        <div class="row">
                            <?php $loop = new WP_Query( array( 'post_type' => 'testimonial', 'posts_per_page' => 2 ) ); ?>
                            <?php while ( $loop -> have_posts() ) : $loop -> the_post(); ?>
                            <!-- Two posts appear here -->
                            <div class="col-md-6">
                                <h1><?php the_title(); ?></h1>
                            </div>
                            <?php endwhile; ?>
                        </div>
                    <?php } ?>
                    <?php
                    $i++;
                endwhile;
            }
            wp_reset_query();
            ?>
        </div>
<!--TESTER -->
<!--TESTER -->
<!--TESTER -->

任何帮助将不胜感激!

干杯桑尼

在这里,我将问题分解成多个部分,因此您可以看到循环自行工作。

<?php 
$slides = [0,1,2,3,4,5];
foreach($slides as $slide):
?>
    <!-- I need to get 6 of these divs which contain 2 cards inside them -->
    <div class="item active">
        <p>Example Carousel Slide <?php echo $slide;?></p>
    </div>
<?php endforeach?>

然后,您不只是回显常量<p>标签,而是在那里放置一个循环。

<?php
$posts = ["post1", "post2"];
foreach($posts as $post):?>
    <div class="col-md-6">
        <?php echo $post;?>
    </div>
<?php endforeach?>

我会向前跳几步,但你最终会得到这样的东西。

<?php
$posts = [
    0=>"post0",
    1=>"post1",
    2=>"post2",
    3=>"post3",
    4=>"post4",
    5=>"post5",
    6=>"post6",
    7=>"post7",
    8=>"post8",
    9=>"post9",
    10=>"post10",
    11=>"post11"];
for($slideNumber=0; $slideNumber < 6; $slideNumber++):
?>
    <!-- I need to get 6 of these divs which contain 2 cards inside them -->
    <div class="item active">
        <?php
        echo("<p>This is slide number " . $slideNumber . "</p>");
        for($i=0; $i<2; $i++):?>
            <div class="col-md-6">
                <?php 
                $actualPostNumber= ($slideNumber * 2) + $i ;
                echo("<p>" . $posts[$actualPostNumber]  . "</p>");
                ?>
            </div>
        <?php endfor; ?>
    </div>
<?php endfor; ?>

阅读该代码,并尝试对它将产生什么提出期望。最后,您应该最终得到 6 张幻灯片,每张幻灯片包含两篇帖子。

我发布的代码是相对于您的最终解决方案的骨架。但是,希望这种"计数器"方法将帮助您为每个轮播幻灯片分配正确数量的帖子。

谢谢大家的帮助。我已经设法解决了这个问题!!这是解决方案:

如果有人对使其成为更好的解决方案有任何想法,请知道!干杯

<?php
    $args=array(
    'post_type' => 'testimonial',
    );
    $query = new WP_Query($args);
    if( $query -> have_posts() ) {
        echo '';
    $i = 0;
    $ids = array();
    while ($query -> have_posts()) : $query->the_post();
        if($i % 2 == 0) { ?>
            <div class="item <?php if($i == 0) :?>active<?php endif; ?>">
                <div class="row">
                    <?php $loop = new WP_Query( array( 'post_type' => 'testimonial', 'posts_per_page' => 2, 'orderby'   => 'rand', 'post__not_in' => $ids ) ); ?>
                    <?php while ( $loop -> have_posts() ) : $loop -> the_post(); ?>
                    <!-- A single testimonial -->
                    <div class="col-md-6">
                        <div class="card card-plain">
                            <div class="content">
                                <h4 class="title"><?php the_content(); ?></h4>
                                    <div class="footer">
                                        <div class="author">
                                            <span><?php the_title(); ?></span>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <?php $ids[] = get_the_ID(); ?>
                    <?php endwhile; ?>
                </div>
            </div>
    <?php } ?>
        <?php
        $i++;
        endwhile;
    }
    wp_reset_query();
?>

相关内容

  • 没有找到相关文章

最新更新