我一直在用两种不同的方法,它们都涉及创建的新实例创建自定义的WordPress循环WP_Query
对象。 我通常都在一个页面上的多个环。
我不明白,这两种方法如何不同,它是利用每一个正确的上下文。
方法1: http://codex.wordpress.org/Class_Reference/WP_Query
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
// output
endwhile;
endif;
wp_reset_postdata();
方法2: http://codex.wordpress.org/Function_Reference/wp_reset_postdata
$original_query = $wp_query;
$wp_query = null;
$wp_query = new WP_Query( $args );
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// output
endwhile;
endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();
似乎都产生相同的结果,但是当我打开WP_DEBUG
,我看到错误与第二方法,如:
注意:is_singular没有正确调用。 在运行查询之前,条件查询标签不起作用。
我的问题是:
- 当我应该使用
$original_query = $wp_query;
进场? - 什么是存储和恢复的相关性
$wp_query
? - 为什么是返回错误信息,当我使用它吗?