有趣的是,我通过使用get_pages()
和WP_Query()
. 我想要一个可重用的函数,该函数将返回一个可循环使用的WP\\U查询数组,因此我提出了以下建议:
function returnChildGeographies($geoID, $geoType, $grandChildren = false) {
$args = array(
\'post_type\' => \'geographies\',
\'posts_per_page\' => -1,
\'orderby\' => \'post_title\',
\'order\' => \'ASC\',
\'post_parent\' => $geoID,
\'tax_query\' => array(
array(
\'taxonomy\' => \'geographytype\',
\'field\' => \'slug\',
\'terms\' => $geoType
)
)
);
if ($grandChildren) {
$getPagesArgs = array(
\'sort_order\' => \'ASC\',
\'sort_column\' => \'post_title\',
\'hierarchical\' => 0,
\'child_of\' => $geoID,
\'post_type\' => \'geographies\'
);
$pagesArray = get_pages($getPagesArgs);
$grandChildArray = array();
foreach ($pagesArray as $grandchild) {
$grandChildArray[] = $grandchild->ID;
}
unset($args[\'post_parent\']);
$args[\'post__in\'] = $grandChildArray;
}
$childArray = new WP_Query($args);
return $childArray;
}
例如用法:如果我正在查看美洲地区,并且我想获取该地区的所有城市(都是该地区的孙子),我会调用:
$regionQuery = returnChildGeographies($post->ID, \'city\', true);
如果我只想要直接的孩子:
$countryQuery = returnChildGeographies($post->ID, \'country\', false);
根据最后一个参数,函数将取消设置
post_parent
和设置
post__in
, 这是我正在寻找的帖子ID数组。
这个函数可能会被整理很多,但方法是:组合get_pages()
和WP_Query()
似乎是获取孙子(或曾孙,或曾孙)和使用自定义分类查询的最佳方式。