【发布时间】:2020-05-21 16:29:45
【问题描述】:
在 woocommerce 中,我有 2 个选择字段:
- 第一个是“汽车品牌”,
- 第二个是
Car Brands中的“汽车模型”。
我想做的是为选定的“汽车品牌”动态获取“汽车模型”
“汽车品牌”来自 WooCommerce 产品属性分类法。对于每个“汽车品牌”,相关的“汽车型号”是该产品属性分类的术语。
这是“汽车品牌”的代码(第一个选择字段):
$attributes = wc_get_attribute_taxonomies();
if($attributes) {
echo '<select id="car-brands"><option value="noselection">Car Brand</option>';
foreach ( $attributes as $attribute ) {
echo '<option value="' . $attribute->attribute_name . '">' . $attribute->attribute_label . '</option>';
}
echo '</select>';
}
还有一个生成的html示例代码:
<select id="car-brands">
<option value="noselection">Car Brand</option>
<option value="toyota">TOYOTA</option>
<option value="lexus">LEXUS</option>
</select>
然后是“汽车型号”的代码(第二个选择字段):
$selected_attribute_name = 'toyota';
$taxonomy = 'pa_' . $selected_attribute_name;
$term_names = get_terms( array( 'taxonomy' => $taxonomy, 'fields' => 'names' ) );
echo '<select id="car-models"><option value="noselection">Car Model</option>';
echo '<option>' . implode( '</option><option>', $term_names ) . '</option>';
echo '</select>';
还有一个生成的html示例代码:
<select id="car-models">
<option value="noselection">Car Model</option>
<option value="toyota">AVENSIS</option>
<option value="lexus">CAMRY</option>
</select>
如您所见,我正在获取“丰田”品牌的特定车型,因为我已将“丰田”硬编码为“汽车品牌”:
$selected_attribute_name = 'toyota';
所以我希望将$selected_attribute_name 作为动态变量,因此当用户选择汽车品牌“LEXUS”或“TOYOTA”时,第二个选择字段会动态加载相关术语(选项) em>。
我找到了很多相关的线程,但我无法理解如何使它适用于我的案例。
如何根据选定的汽车品牌让动态“汽车模型”选择字段选项?
编辑
我所有的 php 都在一个动作钩子函数中,如下所示:
function _themename_woocommerce_custom_filter() {
$attributes = wc_get_attribute_taxonomies();
if($attributes) {
echo '<select id="car-brands"><option value="noselection">Car Brand</option>';
foreach ( $attributes as $attribute ) {
echo '<option value="' . $attribute->attribute_name . '">' . $attribute->attribute_label . '</option>';
}
echo '</select>';
}
$selected_attribute_name = '';
$taxonomy = 'pa_' . $selected_attribute_name;
$term_names = get_terms( array( 'taxonomy' => $taxonomy, 'fields' => 'names' ) );
echo '<select id="car-models"><option value="noselection">Car Model</option>';
echo '<option>' . implode( '</option><option>', $term_names ) . '</option>';
echo '</select>';
}
add_action( 'woocommerce_before_shop_loop', '_themename_woocommerce_custom_filter', 3 );
【问题讨论】:
标签: php jquery ajax wordpress woocommerce