Infinite Loop - WP_Query

时间:2017-01-12 作者:Joe

我正在努力弄清楚为什么下面的代码会导致无限循环,任何指针都会非常棒。

function send_reminder_email() {    
    $args = array(
        \'post_type\'     => \'product\',
        \'meta_key\'      => \'WooCommerceEventsDate\',
        \'orderby\'       => \'meta_value_num\',
        \'post_status\' => \'publish\',
      \'order\'           => \'ASC\',       
        \'meta_query\'    => array(
                array(
                    \'key\'     => \'WooCommerceEventsDate\',
                    \'value\'   => date(\'Y-m-d\', strtotime(\'+7 days\')),
                    \'compare\' => \'=\',
                ),
        ),
    );
    $query = new WP_Query( $args );

    if($query->have_posts()) : 
        while($query->have_posts()) : 
            $query->the_post();     

            $event[] = array( "title" => get_the_title(), "id" => get_the_ID());

        endwhile;           
    endif;
    wp_reset_query();

    print_r($event);


    foreach($event as $key => $value): 

        $args = array(
            \'post_type\'  => \'event_magic_tickets\',
            \'meta_key\'   => \'WooCommerceEventsProductID\',
            \'post_status\'=> \'publish\',          
            \'meta_query\' => array(
                    array(
                        \'key\'     => \'WooCommerceEventsProductID\',
                        \'value\'   => $value[\'id\'],
                        \'compare\' => \'=\',
                    ),
            ),
        );

        $ticketQuery = new WP_Query( $args );       

        if($ticketQuery->have_posts()) : 

            while($ticketQuery->have_posts()): 
                echo "Do something here.";                      
            endwhile;   

        endif;
        wp_reset_query();
    endforeach;         

}

1 个回复
最合适的回答,由SO网友:Howdy_McGee 整理而成

你的第二个循环$ticketQuery 缺少循环$ticketQuery->the_post().

功能the_post() 实际上设置了模板标记$post 对象它所做的最重要的事情是增加post计数器,以便最终$ticketQuery->have_posts() 最终将返回false。没有the_post() 是你的无限循环。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请