是否获取父分类术语和第一子分类术语?

时间:2014-06-18 作者:paper_robots

我正在尝试将父级和第一个子级置于该级别之下。我尝试使用get\\u术语来表示这一点,但我无法做到。我想我需要更广泛的术语。

我知道我可以使用在foreach中运行的get术语,但在页面加载时需要运行很多查询,所以我希望有一个更简单的解决方案。有什么想法吗?

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

不幸的是,您不可能在一个或两个查询中实现这一点。似乎对数据库查询存在误解或误解。运行数据库查询时要记住的最重要方面是数据库查询的数量与这些查询所需的时间。

运行一个或两个查询所需的时间比执行10个查询所需的时间要多,这是没有用的。顺便说一句,功能如下get_termsget_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>\';
        }
    }
}
?>

结束

相关推荐

Taxonomy vs Post Status

我正在构建一个web应用程序,因此可扩展性是我开发时的主要关注点之一。在我正在构建的应用程序上,我有一个名为“项目”的帖子类型。项目可以是:我不需要任何类型的UI,只需要能够查询处于一种或多种状态的所有项目。我假设,由于post\\u status位于posts表中,使用此方法执行这些查询比使用分类法更快?所以,我的问题是,如果有100000个项目,查询哪个会更快?发布状态还是分类法?干杯