下拉选择器中的 WooCommerce 品牌分类术语列表

Ada*_*her 5 php wordpress product taxonomy woocommerce

我不想使用任何插件来完成此任务,因为我最近遇到了与破坏网站的类似项目的冲突。所以我希望从基础开始创建这个功能。

我需要产品类别页面上的下拉列表来按品牌选择产品。下拉列表将显示所有品牌。当您选择其中一个时,网站将仅显示分配给该品牌的产品。我们不需要使用允许按新颖性、价格、受欢迎程度等进行查看的内置下拉菜单。

使用 WooCommerce'Brands的分类法,我建立了自己的品牌,并为每个产品分配了一个品牌

我可以使用以下代码查看所有品牌及其属性的数组:

$brands = get_terms('brand');
print_r($brands);
Run Code Online (Sandbox Code Playgroud)

其输出如下:

大批 (

[0] => WP_Term Object ( [term_id] => 978 [name] => Imari Sometsuke [slug] => imari-sometsuke [term_group] => 0 [term_taxonomy_id] => 978 [taxonomy] => 品牌 [description] => [父级] => 0 [计数] => 1 [过滤器] => 原始)

[1] => WP_Term 对象 ( [term_id] => 982 [名称] => Kutani [slug] => kutani [term_group] => 0 [term_taxonomy_id] => 982 [分类] => 品牌 [描述] => [父级] => 0 [计数] => 2 [过滤器] => 原始)

[2] => WP_Term 对象 ( [term_id] => 977 [名称] => Kutani Shoza [slug] => kutani-shoza [term_group] => 0 [term_taxonomy_id] => 977 [分类] => 品牌 [描述] => [父级] => 0 [计数] => 4 [过滤器] => 原始)

[3] => WP_Term 对象 ( [term_id] => 979 [名称] => Kutani Tokkuri [slug] => kutani-tokkuri [term_group] => 0 [term_taxonomy_id] => 979 [分类] => 品牌 [描述] => [父级] => 0 [计数] => 2 [过滤器] => 原始)

[5] => WP_Term Object ( [term_id] => 985 [name] => Nishikawa Sukenobu [slug] => nishikawa-sukenobu [term_group] => 0 [term_taxonomy_id] => 985 [taxonomy] => 品牌 [description] => [父级] => 0 [计数] => 1 [过滤器] => 原始)

[6] => WP_Term 对象 ( [term_id] => 984 [名称] => Shinsui Ito [slug] => shinsui-ito [term_group] => 0 [term_taxonomy_id] => 984 [分类] => 品牌 [描述] => [父级] => 0 [计数] => 2 [过滤器] => 原始)

[7] => WP_Term 对象 ( [term_id] => 976 [名称] => Takeji Asano [slug] => takeji-asano [term_group] => 0 [term_taxonomy_id] => 976 [分类] => 品牌 [描述] => [父级] => 0 [计数] => 2 [过滤器] => 原始)

[8] => WP_Term Object ( [term_id] => 980 [name] => Toshusai Sharaku [slug] => toshusai-sharaku [term_group] => 0 [term_taxonomy_id] => 980 [taxonomy] => 品牌 [description] => [父级] => 0 [计数] => 3 [过滤器] => 原始)

如何构建下拉(选择)列表来创建此列表?我想它会有类似的框架,我已经开始了:

<?php
$brands = get_terms('brand');
//print_r($brands);
?>

<select name="orderby" class="orderby">
    <?php foreach ( $brands as ??? ) : ?>
        <option value="<?php echo esc_attr( $??? ); ?>" <?php selected( $orderby, $??? ); ?>><?php echo esc_html( $??? ); ?></option>
    <?php endforeach; ?>
</select>
Run Code Online (Sandbox Code Playgroud)

Loi*_*tec 2

正如您所看到的,它是一个术语对象数组(WP_Term 对象),您必须在循环中对该术语的每个属性使用对象语法,如下所示:

<?php

    $brands = get_terms( 'brand', array(
        'orderby'  => 'name'  // orderby arguments ('name', 'slug','term_group', 'term_id', 'id', 'description')
    ) );
    //print_r($brands);

?>
<select name="orderby" class="orderby">
    <?php
        foreach ( $brands as $key => $brand ) :
            $brand_id = $brand->term_id;
            $brand_name = $brand->name;
            $brand_slug = $brand->slug;
            $brand_term_group = $brand->term_group;
            $brand_term_taxonomy = $brand->term_taxonomy_id;
            $brand_taxonomy = $brand->taxonomy;
            $brand_description = $brand->description;
            $brand_parent = $brand->parent;
            $brand_count = $brand->count;
            $brand_filter = $brand->filter;

            $number = $key+1;
            $option = 'option-' . $number;
    ?>
        <option value="<?php echo $option; ?>"><?php echo $brand->name; ?></option>
    <?php endforeach; ?>
</select>
Run Code Online (Sandbox Code Playgroud)

这段代码已经过测试并且可以工作