我正在尝试使用以下答案自定义产品页面上的变体下拉列表:
Add the variation price to variable product dropdown item names in Woocommerce
function wiz_rebuild_variation_dropdown( $html, $args ) {
// Only if there is a unique variation attribute (one dropdown)
if( sizeof($args['product']->get_variation_attributes()) == 1 ) :
$options = $args['options'];
$product = $args['product'];
$attribute = $args['attribute'];
$show_option_none = $args['show_option_none'] ? true : false;
$show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Choose an option', 'woocommerce' );
if ( empty( $options ) && ! empty( $product ) && ! empty( $attribute ) ) {
$attributes = $product->get_variation_attributes();
$options = $attributes[ $attribute ];
}
// Build the Select container
$html = '<select id="something">';
$html .= '<option value="something">' . esc_html( $show_option_none_text ) . '</option>';
if ( ! empty( $options ) ) {
foreach ( $options as $option ) {
// print_r($option);
$html .= '<option value="'. esc_html( $option ) . '">something</option>';
}
}
// Close the Select container
$html .= '</select>';
endif; // More than one attributes (multiple pulldowns) - code not executed
return $html;
}
add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'wiz_rebuild_variation_dropdown', 10, 2);
不知何故,下拉列表不会显示多个标记。我检查了数组,有4个结果(foreach中的print_r)。如果我注解掉'Choose an option'选项,foreach中的第一个结果会显示,但其他三个不会。追加$html变量有问题吗?
我试得头晕目眩:-/有人能看出我做错了什么吗?
干杯,马克
顺便说一句,这是我第一次在这个曾经救过我很多次的平台上发帖。感谢所有这些年来的巨大帮助!
1条答案
按热度按时间hgncfbus1#
所以我发现了问题所在。看起来如果SELECT标记中没有正确的Name属性,这个下拉列表将无法工作。
通过捕获原始示例中的类似内容(参见URL):
$name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );
并将其添加到SELECT:
name="' . esc_attr( $name ) . '"
脚本自动地将所需的类名添加到选项标签,并且图像/价格改变功能也是如此。
谢谢你们的提示,伙计们!Pff..今天迈出了一步:))