首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下拉选择器中的WooCommerce品牌分类术语列表

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

Stack Overflow用户
提问于 2016-08-22 23:37:15
回答 2查看 5.3K关注 0票数 5

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

我需要一个下拉列表在产品类别页面上选择产品的品牌。下拉列表将显示所有品牌。当您选择一个网站只显示那些分配给品牌的产品。我们不需要使用内置下拉,允许通过新的观看,价格,流行等。

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

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

代码语言:javascript
复制
$brands = get_terms('brand');
print_r($brands);

其产出如下:

阵列( => WP_Term Object ( term_id => 978 name => Imari Sometsuke其格=> imari-sometsuke term_group => 0 term_taxonomy_id => 978分类法=>品牌描述=>父母=> 0计数=> 1过滤器=> raw ) 1 => WP_Term Object ( term_id => 982 name => kutani slug => Kutani term_group => 0 term_taxonomy_id => 982分类法=>品牌描述=>亲本=> 0计数=> 2过滤器=> raw ) 2 => WP_Term Object ( term_id => 977 name => Kutani Shoza s g => kutani-shoza term_group => 0 term_taxonomy_id => 977分类法=>品牌描述=>家长=> 0计数=> 4 filter => raw ) 3 => WP_Term对象( term_id => 979 name => Kutani Tokkuri slug => kutani-tokkuri term_group => 0 term_taxonomy_id => 979分类法=>品牌描述=>父母=> 0计数=> 2 filter => raw ) 5 => WP_Term Object ( term_id => 985 name => Nishikawa Sukenobu段塞=> nishikawa-sukenobu term_group => 0 term_taxonomy_id => 985分类法=>品牌描述=>父母=> 0计数=> 1过滤器=> raw ) 6 => WP_Term Object ( term_id => 984 name => Shinsui Ito吧=> shinsui-ito term_group => 0 term_taxonomy_id => 984分类法=>品牌描述=>父母=> 0计数=> 2过滤器=> raw ) 7 => WP_Term Object ( term_id => 976 name => Takeji Asano slug => term_group => 0 term_taxonomy_id => 976分类法=>品牌描述=> parent => 0计数=> 2 filter => raw ) 8 => WP_Term Object ( term_id => 980 name => Toshusai Sharaku段塞=> toshusai-sharaku term_group => 0 term_taxonomy_id => 980分类法=>品牌描述=>家长=> 0计数=> 3过滤器=> raw ) )

如何构建下拉列表(select)来创建这个列表?我想它会有这样的框架,我已经开始了:

代码语言:javascript
复制
<?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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-23 02:19:40

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

代码语言:javascript
复制
<?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>

这段代码是经过测试和工作的

票数 2
EN

Stack Overflow用户

发布于 2018-09-27 16:40:10

在WooCommerce的新版本中,terms是pa_的前缀,因此pa_brand取代了品牌。

最新版本的工作代码将是

代码语言:javascript
复制
<?php $brands = get_terms('pa_brand', ['orderby' => 'name']); ?> 
<select name="orderby" class="orderby">
    <?php
    if (!empty($brands) && !is_wp_error($brands)):
        foreach ($brands as $brand) :
            ?>
            <option value="<?= $brand->term_id; ?>">
                <?= $brand->name; ?>
            </option>
            <?php
        endforeach;
    endif;
    ?>
</select>

参考资料:terms/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39090263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档