不幸的是,您不可能在一个或两个查询中实现这一点。似乎对数据库查询存在误解或误解。运行数据库查询时要记住的最重要方面是数据库查询的数量与这些查询所需的时间。
运行一个或两个查询所需的时间比执行10个查询所需的时间要多,这是没有用的。顺便说一句,功能如下get_terms
和get_taxonomies
非常便宜,所以即使您进行20次数据库查询,它也会以闪电般的速度出现,因此您无需在这里担心。
您必须在这里使用两个函数来列出您的分类法和属于这些分类法的术语。第一个功能是get_taxonomies()
这将得到所有分类法的列表。这里最重要的论点是_builtin
, 必须将其设置为false。原因是类别、标记甚至帖子格式也是分类法,所以您需要排除这些。
其次,您需要使用get_terms
函数获取属于这些分类法的所有术语。您需要从foreach
循环组件$taxonomies
获取属于该特定分类法的术语。
这是完整的代码
<?php
$args = array(
\'public\' => true,
\'_builtin\' => false
);
$output = \'names\'; // or objects
$operator = \'and\'; // \'and\' or \'or\'
$taxonomies = get_taxonomies( $args, $output, $operator );
if ( $taxonomies ) {
foreach ( $taxonomies as $taxonomy ) {
echo \'<p>\' . $taxonomy . \'</p>\';
$terms = get_terms($taxonomy);
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo \'<ul>\';
foreach ( $terms as $term ) {
echo \'<li>\' . $term->name . \'</li>\';
}
echo \'</ul>\';
}
}
}
?>