如果帖子位于单独的内容页面中,如何计算帖子的数量?

时间:2019-02-01 作者:Mark20

我正在使用一个内容页来呈现我的“循环”中的元素,我想数一数帖子以获得我的当前位置,因为这将决定我显示的卡片的大小。我的(html、css卡你可以看到引导卡来理解我的意思)卡的宽度是可变的,第一、第二和第三张卡占据了大部分空间。

我的代码如下(对于content.php):

    <?php if ($count == 0) { ?>
      <div class="row bg-white banner">
       <div class="col col-sm-8 remove-left-margin">
          <img src="./img/banner.png" class="banner-article-image" />
       </div>
       <div class="col-sm-4">
          <div><p class="banner-article-topic"><?php the_category(); ?></p></div>
          <div><h2 class="banner-article-title"><b><?php the_title(); ?></b></h2></div>
          <div><p class="banner-article-par"><?php the_content(); ?></p></div>
          <div><p class="banner-article-date"><?php the_date(); ?></p></div>
       </div>
     </div>
   <?php } ?>

   <?php if ($count > 2) { ?>
    <div class="row">
    <?php if ($count % 2 != 0) { ?>
        <div class="col col-sm-6 custom-margin">
            <div class="left-card-article">
                <div class="row">
                    <img src="./img/sample-3.jpg" class="img-responsive card-article-image" />
                </div>

                <div class="row card-article-body">
                    <div><p class="left-article-topic"><?php the_category(); ?></p></div>
                    <div><h4 class="left-article-title"><b><?php the_title(); ?></b></h4></div>
                    <div><p class="left-article-date"><?php the_date(); ?></p></div>
                </div>
            </div>
        </div>
    <?php } ?>

    <?php if ($count % 2 == 0) { ?>
          <div class="col col-sm-6 custom-margin">
            <div class="right-card-article">
                <div class="row">
                    <img src="./img/sample-4.jpg" class="img-responsive card-article-image" />
                </div>

                <div class="row card-article-body">
                    <div><p class="right-article-topic"><?php the_category(); ?></p></div>
                    <div><h4 class="right-article-title"><b><?php the_title(); ?></b></h4></div>
                    <div><p class="right-article-date"><?php the_date(); ?></p></div>
                </div>
            </div>
        </div>
      <?php } ?>
    </div>
<?php } ?>
这是我的内容示例。php,如何从index传递$count变量。php,如下所示(仅循环):

<div class="container body-margin" style="margin-top: 8em;">
<?php
    $count = 0;
    if ( have_posts() ) : while ( have_posts() ) : the_post();
      get_template_part( \'content\', get_post_format() );
      $count++;
    endwhile; endif;
?>
</div>
非常感谢您的帮助,谢谢。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

最简单的解决方案(如需要最少的工作)是$count 全局变量。

所以在index.php 您将拥有:

global $post;
$count = 0;
并且在content.php 你只需要使用$global $post; 要访问它:

<?php
global $post;

if ($count == 0) { ?>
然而,我认为这是错误的做法。您的情况是,您实际上有3个不同的模板,并且希望根据当前的帖子数量选择要显示的模板。当前帖子数量与各个模板无关。这应该在循环中确定。

因此,我建议为每种类型的卡创建3个不同的模板文件。然后是内部索引。php根据当前数字选择要显示的内容。这样,您就不需要在模板之间传递变量。

So索引。php如下所示:

$count = 0;

if ( have_posts() ) : while ( have_posts() ) : the_post();
    if ( $count == 0 ) {
        get_template_part( \'content\', \'banner\' );
    } 

    if ( $count > 2 ) {
        echo \'<div class="row">\';

        if ( $count % 2 != 0 ) {
            get_template_part( \'content\', \'left-card\' );
        } else if ( $count % 2 == 0 ) {
            get_template_part( \'content\', \'right-card\' );
        }

        echo \'</div>\';
    }

    $count++;
endwhile; endif;
然后你会分开content.php 进入content-banner.php, content-left-card.php, 和content-right-card.php 使用每种类型的卡的模板。

PS:我刚刚复制了你的if语句$count, 但在我看来,这个循环在第二次&;时根本不会输出任何东西;第三个岗位。我不确定这是否是故意的,但如果不是,$count > 2 应该是吧$count > 0.