在内部和外部循环使用相同的变量

时间:2015-06-28 20:31:00

标签: php wordpress

在我的博客页面上,我有一个循环,它使用自定义模板显示帖子content-blog.php

content-blog.php也用于渲染Infinite Scroll提取的消息。它以一种方式显示来自Twitter类别的消息,而以其他方式显示所有其他消息。

我想在第一篇文章中添加额外的课程,而不是Twitter类,以实现此目标

twitter

twitter

any-other.extraclass

any-other

any-other

twitter

twitter

any-other.extraclass

any-other

或者将额外的课程添加到上次Twitter以实现此目标

twitter

twitter.extraclass

any-other

any-other

any-other

twitter

twitter.extraclass

any-other

any-other

我已经在home.php

中找到了一个结构
<?php $flag = 0; ?> 
<?php while ( have_posts() ) : the_post(); ?>

  <?php if (has_category( 'Twitter' )): ?>
     stuff done..
     <?php $flag = 1; ?>    
  <?php else: ?>
     stuff done and extra glass given if $flag == 1
     <?php $flag = 0; ?>
  <?php endif; ?>
<?php endwhile; // end of the loop. ?>

可以使用但在使用单独的模板部件时不起作用。

<?php $flag = 0; ?> 
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'blog' ); ?>

  --content-blog.php--

  <?php if (has_category( 'Twitter' )): ?>
     stuff done..
     <?php $flag = 1; ?>    
  <?php else: ?>
     stuff done and extra glass given if $flag == 1
     <?php $flag = 0; ?>
  <?php endif; ?>

-- /content-blog.php --

<?php endwhile; // end of the loop. ?>

1 个答案:

答案 0 :(得分:0)

今天我了解了局部变量范围和全局变量范围之间的区别。在functions.php中设置变量并声明$ flag global后,一切正常。

--content-blog.php--

<?php global $flag; ?>  

<?php if (has_category( 'Twitter' )): ?>
   stuff done..
   <?php $flag = 1; ?>    
<?php else: ?>
   stuff done and extra glass given if $flag == 1
   <?php $flag = 0; ?>
<?php endif; ?>

-- /content-blog.php --