php foreach循环没有显示所有结果(woocommerce变化下拉菜单)

cu6pst1q  于 2022-12-17  发布在  PHP
关注(0)|答案(1)|浏览(164)

我正在尝试使用以下答案自定义产品页面上的变体下拉列表:
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变量有问题吗?
我试得头晕目眩:-/有人能看出我做错了什么吗?
干杯,马克
顺便说一句,这是我第一次在这个曾经救过我很多次的平台上发帖。感谢所有这些年来的巨大帮助!

hgncfbus

hgncfbus1#

所以我发现了问题所在。看起来如果SELECT标记中没有正确的Name属性,这个下拉列表将无法工作。
通过捕获原始示例中的类似内容(参见URL):
$name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );
并将其添加到SELECT:
name="' . esc_attr( $name ) . '"
脚本自动地将所需的类名添加到选项标签,并且图像/价格改变功能也是如此。
谢谢你们的提示,伙计们!Pff..今天迈出了一步:))

相关问题