0

我正在尝试使用以下代码输出日期大于或等于今天日期的事件列表:

$args = array('post_type' => 'event') // setup my custom post type    
$todaysdate = blah blah //setup for today's date

// the wp loop  
query_posts($args); 

if ( (have_posts() && $eventdate >= $todaysdate)  ) : while (have_posts()) : the_post();

$eventdate = blah blah // setup for the date of the event;

echo $event;

endwhile; endif;

如您所见,问题在于 IF 依赖于循环内的变量。

首先在循环外设置变量的最佳方法是什么?

4

2 回答 2

0

而不是做

if stuff from while iteration that doesn't exist yet
    while

那么你应该做

while
    if stuff from current while iteration

就像你说的:“你可以看到的问题是 IF 依赖于循环内的一个变量。”

您只需构建代码,以便在当前执行时存在所需的内容。只需将依赖项移动到适当的位置,以便它在您使用之前就存在。

于 2013-03-26T16:26:47.247 回答
0

if 实际上应该在循环内,例如

$args = array('post_type' => 'event') // setup my custom post type    
$todaysdate = "blah blah"; //setup for today's date

// the wp loop  
query_posts($args); 

if ( (have_posts()) : while (have_posts()) : the_post();

$eventdate = "blah blah"; // setup for the date of the event;

if($eventdate >= $todaysdate))

echo $event;

endif;

endwhile; endif;

编辑:

Thanks, this works fine, however, I want to output a set number of events (5 in total) which I've defined in $args. So $args sets up 5 events, but the second IF then filters out old events so I end up with less than 5.

但这与您拥有它的原因相同。但是,如果您的意思是它应该显示该日期之后的 5 个事件,则wp_query需要对其本身进行修改。在此处查看示例

于 2013-03-26T16:31:40.150 回答