在设置循环之前,在循环外设置变量的最佳方法是什么?

时间:2013-03-26 16:22:08

标签: php wordpress

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

$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依赖于循环内的变量。

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

2 个答案:

答案 0 :(得分:0)

而不是做

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

然后你应该做

while
    if stuff from current while iteration

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

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

答案 1 :(得分: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()) : 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本身。见Examples Here