无法使用TAX_QUERY获取多个循环

时间:2011-06-17 作者:Steve Fischer

我正在尝试显示三个循环。它们都属于相同的职位类型和相同的分类家族。但我试图用三个不同的值来区分分类法。

$argsOwners = array( \'tax_query\' => array(array(\'taxonomy\' => \'position\',  \'field\' => \'slug\', \'terms\' => \'senior-management\'    )));
$the_query_owners = new WP_Query( $argsOwners );
那么我

<?php wp_reset_postdata(); // reset the query ?>
那么我

$argsSales = array( \'tax_query\' => array(array(\'taxonomy\' => \'position\',  \'field\' => \'slug\', \'terms\' => \'sales\' )));
$the_query_sales = new WP_Query( $argsSales );
我再次重复第三个术语“admin”。问题是只有第一个查询才能工作。有什么想法吗?

编辑编辑编辑

我想我知道问题出在哪里了。这与is是否已登录有关。如果我已登录,则只会显示for查询。但如果我注销了,那么我就可以完美地获得所有3个。

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

正如“死亡医生”所说,你必须这样工作。在默认循环中,如:

while( have_posts() ) : the_post

endwhile;
在这种情况下,循环以默认值运行$wp_query 变量但在运行自定义查询时,需要使用while( $query_obj->have_posts() ) : $query_obj->the_post(); 就像那样

但是,在登录和注销时,您不应该得到不同的结果:S

SO网友:TheDeadMedic

你在打电话吗$obj->the_post(), 而不是仅仅the_post()? 例如

/* Senior Management */
$query_args = array( \'tax_query\' => array( array( \'taxonomy\' => \'position\',  \'field\' => \'slug\', \'terms\' => \'senior-management\' ) ) );
$query_obj = new WP_Query( $query_args );

while( $query_obj->have_posts() ) : $query_obj->the_post();

    // do senior-management stuff here

endwhile;


/* Sales */
$query_args[\'tax_query\'][0][\'terms\'] = \'sales\';
$query_obj->query( $query_args );

while( $query_obj->have_posts() ) : $query_obj->the_post();

    // do sales stuff here

endwhile;


/* Marketing */
$query_args[\'tax_query\'][0][\'terms\'] = \'marketing\';
$query_obj->query( $query_args );

while( $query_obj->have_posts() ) : $query_obj->the_post();

    // do marketing stuff here

endwhile;
如果您对每个循环都执行相同的“操作”,则可以通过在foreach 在一系列位置项上。

结束

相关推荐