根据帖子条件在wordpress循环中途插入元素

时间:2012-02-23 17:47:43

标签: php wordpress

对于一个可能很暗淡的问题感到抱歉,但我找不到正确的术语来找到解决方案。

我的post_type事件有一个wordpress循环[php while while循环]。每个帖子都有一个带日期字符串的值。我将此字符串与当前日期进行比较。日期值从未来开始到几年前结束。

当循环到达日期值低于当前日期[$date > $eventdate]的帖子时,我想插入一些代码[分隔符<article>],然后继续我的循环。我该怎么做?

看起来非常简单但请帮忙,因为我被卡住了!

编辑:我尝试嵌套两个条件while循环,其间有分隔符代码,但这非常糟糕。然后尝试了类似于if的东西,但我也犯了错误。这是[简化]代码:

    <?php
    $date = date(Ymj);
      if ( have_posts() ) : while ( have_posts() ) : the_post();
        $eventdate = get_post_meta($post->ID, 'event-date', true); ?>
    <article>post goes here</article>
      <?php endwhile; else: 
    ?>

2 个答案:

答案 0 :(得分:1)

<?php
$did_article = false;
$now = time();
if ( have_posts() ) : while ( have_posts() ) : the_post();
    $eventdate = get_post_meta( $post->ID, 'event-date', true );
    $eventdate = strtotime( $eventdate );
    if ( !$did_article ) {
        if ( $now > $eventdate ) {
            $did_article = true;
            // Do special article stuff here
        }
    } ?>
    Do regular post suff here
<?php endwhile; endif; ?>

答案 1 :(得分:0)

 <?php
$date = date(Ymj);
$datetime = strtotime($date);

  if ( have_posts() ) : while ( have_posts() ) : the_post();
    $eventdate = get_post_meta($post->ID, 'event-date', true); ?>
    $eventdatetime = strtotime($eventdate); //$ventdatetime must be seconds
    if ($datetime > $eventdatetime) {
          <!--here goes the code for past events-->
    }
    <article>post goes here</article>
  <?php endwhile; else: 
?>