【问题标题】:Woocommerce change product variation via JSWoocommerce 通过 JS 更改产品变体
【发布时间】:2019-07-16 16:31:50
【问题描述】:

这是我们所在位置的一个工作示例:http://fpusa.drunk.kiwi/product/ship-your-idea-2/

我正在尝试创建“样本”供用户单击,这将改变 woocommerce 用于获取变化数据的隐藏选择框的值。

有没有特定的方法告诉 woocommerce 读取选择框的值?

一切都按预期工作,但更改变体 ID 并准备好将所有内容添加到购物车的 javascript 事件从未发生。

注意:我用 d-none 隐藏了 wc_dropdown,因为我认为它会最小化自定义解决方案。

Variable.php - 调用 fpusa_product_attribute_button();

<?php foreach ( $attributes as $attribute_name => $options ) : ?>

  <tr class="">
    <td class="label"><label for="<?php echo esc_attr( sanitize_title( $attribute_name ) ); ?>"><?php echo wc_attribute_label( $attribute_name ); // WPCS: XSS ok. ?></label></td>
        <td class="value">
            <?php
              fpusa_product_attribute_button( $options, $attribute_name, $product );

              wc_dropdown_variation_attribute_options( array(
                'options'   => $options,
                'attribute' => $attribute_name,
                'product'   => $product,
                'class'         => 'd-none',
              ));

            echo end( $attribute_keys ) === $attribute_name ? wp_kses_post( apply_filters( 'woocommerce_reset_variations_link', '<a class="reset_variations" href="#">' . esc_html__( 'Clear', 'woocommerce' ) . '</a>' ) ) : '';

            ?>
        </td>
    </tr>

<?php endforeach; ?>

fpusa_product_attribute_button()

function fpusa_product_attribute_button( $options, $attribute_name, $product ){
    if( ! empty( $options ) ) : ?>
        <div id="var_btn" class="d-flex">
            <?php foreach( $options as $option ): ?>
                <button type="button" class="d-flex btn justify-content-center align-items-center border mx-1" data-key="<?php echo $attribute_name ?>" data-value="<? echo $option ?>">
                    <?php echo $option; ?>
                </button>
            <?php endforeach; ?>
        </div> <?php
    endif;
}

Functions.js

$('#var_btn button').click(function(){
   let attribute = $(this).attr('data-key');
   let option = $(this).attr('data-value');
   console.log( attribute, option );
   $('#' + attribute).val( option );
});

【问题讨论】:

    标签: javascript php wordpress woocommerce


    【解决方案1】:

    我所要做的只是触发&lt;select&gt; 上的更改事件,将所选选项传递给。

    $('#var_btn button').click(function(){
        let attribute = $(this).attr('data-key');
        let option = $(this).attr('data-value');
        console.log( attribute, option );
        $('#' + attribute).val( option ).change();
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-26
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多