如何在POST循环中的关键点使用备用柱子布局?

时间:2019-06-24 作者:Robert Andrews

如何干预post循环输出,以交替标记显示3篇文章,然后继续?

我有一个post循环调用我的post card模板片段,card-pair_top.php, 要这样显示。。。

enter image description here

但是,当帖子数量很高时,它看起来是重复的。所以,在关键点,我想改变视觉变化的布局。我想使用我的“功能”card-overlay.php 主题片段。。。

enter image description here

我想使用相同的单个WP\\U查询结果执行此操作,$posts_topic_remainder, 而不是进行多个查询,部分原因是我希望保持整齐的分页。

具体而言,在while have_posts loop,我想把柱子弄断divs、 甚至是争吵div, 并插入一个新的嵌套行标记集,该标记集本身应使用card-overlay.php.

然后,它应该恢复标记并使用恢复显示循环内容card-pair_top.php, 直到下一次休息。

这是原始循环输出。。。

    <!-- Posts row -->
    <div class="row px-2">
        <?php
            $i=0;
            // Post Loop
            while ( $posts_topic_remainder->have_posts() ) {
                $posts_topic_remainder->the_post();

                // Impose an offset, skip same number used in features above
                $i++;
                if($i<=$num_features) continue;

                // set_query_var( \'tax_slug_to_do\', $this_terms_tax_slug );
                set_query_var(\'columns\',  $post_classes);
                // Get Loop template
                get_template_part(\'partials/loops/card\', \'pair_top\');

            }
            wp_reset_postdata();
        ?>
    </div><!-- end .row -->
下面是一些代码,我使用一个基本条件来打破div并引入一个新行。。。

    <!-- Posts row -->
    <div class="row px-2">
        <?php
            $i=0;
            // Post Loop
            while ( $posts_topic_remainder->have_posts() ) {
                $posts_topic_remainder->the_post();

                // Impose an offset, skip same number used in features above
                $i++;
                if($i<=$num_features) continue;




                if ($i == 19 OR $i == 31 OR $i == 43) { ?>
                </div><!-- break .row of .pair_tops -->

                    <div class="row showcase pt-4 pb-4">
                        <!-- CONTENT COLUMN -->
                        <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
                            <!-- Posts row -->
                            <div class="row posts-row">


                                <?php
                                /* *********************************** */
                                /*           Features                  */
                                /* *********************************** */
                                 echo \'<div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 col-xl-4">\';

                                        set_query_var(\'queried_object\',$queried_object);

                                        set_query_var(\'use_byline\', \'true\');

                                        if ( $queried_object->slug == \'essays\') {
                                             set_query_var(\'use_source\', \'true\');
                                        } else {
                                             set_query_var(\'use_source\', \'false\');
                                        }

                                        if ($queried_object->name == \'session\') {
                                             $card_type = \'overlay_session\';
                                        } else {
                                             $card_type = \'overlay\';
                                        }
                                        get_template_part(\'partials/loops/card\', $card_type);

                                 echo \'</div>\';
                                ?>


                            </div>
                        </div>
                    </div>

                    <div class="row px-2"><!-- resume .row of .pair_tops -->
                <?php
                }


                // Tell loop template which taxonomy to loop through (set above ^)
                set_query_var(\'columns\',  $post_classes);
                // Want to hide last N items for responsive-space reasons? Pass these vars

                // Get Loop template
                get_template_part(\'partials/loops/card\', \'pair_top\');

            }
            wp_reset_postdata();
        ?>
    </div><!-- end .row -->
这让我想到了这一点,这是一半。。。

enter image description here

我的代码存在以下问题。。。

虽然我成功地引入了一个备用行并显示了一个帖子,但我需要显示三个帖子。我该怎么做?(这是“功能”div 在…内.row .posts-row 必须为三篇文章呈现)card-pair_top.php 随后,标准布局循环何时恢复

1 个回复
SO网友:ChristopherJones

有很多方法可以打破这种局面。我认为你有一个正确的想法,就是用$i, 但也许一些简单易懂的东西可以改变这一点:

if ($i == 19 OR $i == 31 OR $i == 43) { ?>
对此:

if(
    in_array($i, range(19, 21)) ||
    in_array($i, range(31, 33)) || 
    in_array($i, range(43, 45))
) { ?>
您可以更深入地了解它,并创建一个数组,该数组可以控制要开始的数字以及该数字的偏移量,以标记为特色帖子。

希望这有帮助!!

相关推荐

Update around 200,000 posts

因此,我最近通过MySQL从一个普通站点迁移到wordpress CMS。我成功地将旧数据库与WordPress的数据库相适应。现在,该网站有3种语言的内容。我正在使用polylang来实现这一点。我已经成功地创建了分类关系,我可以看到我所有的帖子都有所需的语言id。我还有大约60个类别。Polylang有一个功能,如果更新了帖子(而不是数据库更新),则会以帖子的语言动态创建所需的类别。我已经通过手动更新对此进行了测试,并且效果良好。但问题是我无法找到一个解决方案来一次性批量更新所有帖子。I tried