在WordPress中的循环内循环

时间:2014-12-13 23:01:25

标签: php wordpress date loops

我在WordPress中遇到了一些PHP代码问题而我认为解决方案与循环有关。我已经看过http://codex.wordpress.org/The_Loophttp://codex.wordpress.org/The_Loop_in_Action,但这已经超出了我的想象,而且我已经浪费了整个星期六。

所以问题是我在我网站的主页上有一个小部件。它显示了接下来发生的5个事件的标题以及它们的链接。我想要做的是同时显示上次修改事件(它们就像博客文章)的日期。

问题是我的代码一直返回错误的日期。我今天修改了我的帖子,即12月13日,它一直在输出12月11日。我不知道从哪里得到那个日期。我尝试使用 the_modified_date() get_the_modified_date(),结果相同。我猜这个函数不知道从哪个帖子中提取日期,它与循环有关。

所以我一直在搞乱小部件的代码。这是我所拥有的简化版本:

foreach ($events as $event) {

  if ( $event['event_date'] >= $site_date ) {

    $lastMod = get_the_modified_date($phpformatstring);
    echo $lastMod;

    echo '<br><a href="' . get_permalink($event['ID']) . '"  >' . get_the_title($event['ID']) . '</a>';

    if ( !empty( $widget_display_count ) ) {
      $counter++;
      if ( $counter == $widget_display_count )
        break;
    }
  }
}

我真的希望有人可以帮助我。如果您想使用我正在使用的小部件进行尝试,可以使用名为Events Listing Widget

的小部件

2 个答案:

答案 0 :(得分:1)

get_the_modified_date()需要$post全局。该插件正在迭代wpdb查询的结果,所以从技术上讲,没有WP循环。

global $post; $post = get_post( $event['ID'] ); setup_postdata( $post );调用之前get_the_modified_date()之类的内容应该有效。不要忘记在wp_reset_postdata();

之后重置帖子数据

答案 1 :(得分:0)

get_the_modified_date()对循环中的当前帖子起作用。

该函数使用get_post_modified_time()来获取接受帖子ID的日期。

替换:

$lastMod = get_the_modified_date($phpformatstring);

使用:

$lastMod = get_post_modified_time( $phpformatstring, null, $event['ID'], true );