我不希望使用任何插件来完成这一任务,因为我最近经历了与一个类似项目的冲突,破坏了一个网站。因此,我希望从基础开始创建这个功能。
我需要一个下拉列表在产品类别页面上选择产品的品牌。下拉列表将显示所有品牌。当您选择一个网站只显示那些分配给品牌的产品。我们不需要使用内置下拉,允许通过新的观看,价格,流行等。
使用WooCommerce WooCommerce分类法,我建立了自己的品牌,并为每个产品分配了一个品牌。
我可以使用以下代码查看所有品牌及其属性的数组:
$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)来创建这个列表?我想它会有这样的框架,我已经开始了:
<?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>发布于 2016-08-23 02:19:40
如您所见,它是一个术语对象数组(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>这段代码是经过测试和工作的
发布于 2018-09-27 16:40:10
在WooCommerce的新版本中,
terms是pa_的前缀,因此pa_brand取代了品牌。
最新版本的工作代码将是
<?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/
https://stackoverflow.com/questions/39090263
复制相似问题