按另一个WP_Query筛选的CPT的WP_QUERY

时间:2015-06-23 作者:Khaled Sadek

我正在从事一个项目,有2个CPT:

  • Projects
  • Units
Unit 具有包含id 属于Project
Project 指定了一个名为Regions

现在我需要得到所有Units 在特定的Region

我想我必须WP_Query 获取所有Projects 在a中Region然后使用Projects ids 要查找Units 被另一个WP_Query. 我试过几次,但都没能解决。我怎样才能得到全部Units 在a中Region?

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

你的方法是正确的。如果您发布代码,效果会更好,但类似这样:

$args = array(
    \'post_type\' => \'project\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'region\',
            \'field\'    => \'slug\',
            \'terms\'    => $region, //set your region
        ),
    ),
);
$the_query = new WP_Query( $args );

// The Loop of Projects by Region
if ( $the_query->have_posts() ) {

    $projectsid = array();
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        $projectsid[] = get_the_ID();
    }

    $args = array(
        \'post_type\' => \'unit\',
        \'meta_query\' => array(
            array(
                \'key\'       => $keyname, //set the key name which store ID
                \'value\'     => $projectsid,
                \'compare\'   => \'IN\',
                \'type\'      => \'NUMERIC\'
            ),
        ),
    );
    $the_query = new WP_Query( $args );

    // The Loop of units in project per region
    if ( $the_query->have_posts() ) {

        while ( $the_query->have_posts() ) {
            $the_query->the_post();
            //do something

        }

    } else {

        //No units for projects in this region

    }

} else {

    //No projects in this region

}

wp_reset_query();

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register