php 获取也使用第二分类法的分类术语

ohtdti5x  于 2022-12-17  发布在  PHP
关注(0)|答案(2)|浏览(122)

假设我有一个卖汽车的网站。
对于制造商(如BMW、Audi等),我使用一个名为brand的自定义分类,对于汽车类型(如SUV、Coupe等),我使用一个名为type的自定义分类。
对于汽车本身,我使用一个名为models的自定义post类型。
现在我想显示type分类归档中的每辆汽车brand(所有带有SUV的品牌)。
为了做到这一点,我试图得到所有的brands和过滤他们与所有的types。因此,应该有一个名单,所有汽车品牌的SUV。
下面是我当前获取品牌列表的代码:

$taxonomies = get_terms( array(
    'taxonomy' => 'brand',
    'hide_empty' => false
) );
 
if ( !empty($taxonomies) ) :
    $output = '<select>';
    foreach( $taxonomies as $category ) {
        if( $category->parent == 0 ) {
            $output.= '<optgroup label="'. esc_attr( $category->name ) .'"></optgroup>';
        }
    }
    $output.='</select>';
    echo $output;
endif;

我找不到向此代码段添加第二个分类的方法。这是错误的方法吗?
也许我需要先得到自定义的帖子类型(模型)来检查哪一个有两个术语?

4ktjp1zp

4ktjp1zp1#

我找到了一个有效的解决办法:

$productcat_id      = get_queried_object_id();
$args = array(
    'numberposts' => -1,
    'post_type' => array('models'),
    'tax_query' => array(
        array(
            'taxonomy' => 'brand',
            'field'    => 'term_id',
            'terms'    => $productcat_id,
        ),
    ),
);

$cat_posts  = get_posts($args);

$my_post_ids = wp_list_pluck ($cat_posts, 'ID');
$my_terms    = wp_get_object_terms ($my_post_ids, 'types');

if ( !empty($my_terms)) :
    echo '<ul>';
        foreach( $my_terms as $my_term ):

            $brand_name = $my_term->name;
            $brand_link = get_term_link($my_term);

            echo '<li><a alt="'.$brand_name.'" href="'.esc_url( $brand_link ).'">'.$brand_name.'</a></li>';

        endforeach;
    echo '</ul>';
endif;
g6ll5ycj

g6ll5ycj2#

This article有一个真正有帮助的分解。
我需要获取属于另一个分类法的分类法,以便用于创建下拉列表(以及其他一些用途)。这段代码允许我标识属于特定“目的地”的“类别”。

$dest_slug = get_query_var('term');
$desination_ids = get_posts(array(
'post_type' => 'item',
'posts_per_page' => -1,
'tax_query' => array(
    array(
        'taxonomy' => 'destinations',
        'field' => 'slug',
        'terms' => $dest_slug
    )
),
'fields' => 'ids'
));
$categories = wp_get_object_terms($desination_ids, 'category');

相关问题