根据自定义“ woocommerce_variation_option”将复选框添加到WooCommerce结帐页面

威力克斯

我使用以下代码在产品中添加了其他变体选项:

add_action('woocommerce_variation_options', 'he_add_to_variation_option', 10, 3);
function he_add_to_variation_option( $loop, $variation_data, $variation){
    $is_trial = (get_post_meta($variation->ID, '_trialversion', true)) ? ' checked' : '';
    ?>
    <label class="tips" data-tip="<?php esc_attr_e( 'Enable this option to make as a trial version', 'woocommerce' ); ?>">
        <?php esc_html_e( 'Trial Version?', 'woocommerce' ); ?>
        <input type="checkbox" class="checkbox variable_is_trial_version" name="_trialversion[<?php echo esc_attr( $variation->ID ); ?>]"<?php echo $is_trial;?>/>
    </label>
<?php
}

add_action( 'woocommerce_save_product_variation', 'save_trialversion_option_fields'  );
function save_trialversion_option_fields( $post_id ) {
    if ( isset( $_POST['_trialversion'] ) ){
        foreach ( $_POST['_trialversion'] as $productid=>$checked ){
            update_post_meta( $productid, '_trialversion', 'yes' );
        }
    }    
}

效果很好,显示在变量中,并正确保存在数据库中。

到现在为止还挺好。

现在,如果产品被标记为“试用版”,我想在结帐时添加一个额外的复选框。我也使用了“德语”插件,该插件具有用于自定义复选框的选项,但是我无法识别上述代码所做的更改。

如何为试用版变体完成自定义复选框?不管有没有德语,这时我只想让它工作。也许有一个免费的插件,但是如果我可以通过添加一些代码来做到这一点,那可能会更容易。

该复选框必须是完成购买试用版所必需的。

希望有人对如何做到这一点有所了解。期待您的答复!

7uc1f3r

当产品变体启用“试用版”时,将在结帐页面上添加一个新复选框

woocommerce_save_product_variation 不应该包含foreach循环,该函数的第二个参数已经包含一个计数器 $i

通常,复选框的问题也应解决

function add_to_variation_option( $loop, $variation_data, $variation){
    $is_trial = get_post_meta( $variation->ID, '_trialversion', true);

    if ( $is_trial == 'yes' ) {
        $is_trial = 'checked';
    } else {
        $is_trial = '';     
    }

    ?>
    <label class="tips" data-tip="<?php esc_attr_e( 'Enable this option to make as a trial version', 'woocommerce' ); ?>">
        <?php esc_html_e( 'Trial Version?', 'woocommerce' ); ?>
        <input type="checkbox" class="checkbox variable_is_trial_version" name="_trialversion[<?php echo esc_attr( $loop ); ?>]"<?php echo $is_trial;?>/>
    </label>
    <?php
}
add_action('woocommerce_variation_options', 'add_to_variation_option', 10, 3);

function save_trialversion_option_fields( $variation_id, $i ) {
    if ( !empty($_POST['_trialversion']) && !empty( $_POST['_trialversion'][$i] ) ) {
        update_post_meta( $variation_id, '_trialversion', 'yes' );
    } else {
        update_post_meta( $variation_id, '_trialversion', 'no' ); 
    }       
}
add_action( 'woocommerce_save_product_variation', 'save_trialversion_option_fields', 10, 2 );

/**
 * Add checkbox field to the checkout
 **/ 
function my_custom_checkout_field( $checkout ) {
    // Get $product object from Cart object
    $cart = WC()->cart->get_cart();

    foreach( $cart as $cart_item ) {                
        // The WC_Product object
        $product = wc_get_product( $cart_item['product_id'] );

        // Checks the product type, 'variable', returns boolean
        if ( $product->is_type( 'variable' ) ) {
            // Get variation id
            $variation_id = $cart_item['data']->get_id();

            // Get post meta
            $trialversion = get_post_meta( $variation_id, '_trialversion', true);

            // Found
            if ( $trialversion == 'yes' ) {
                $trialversion = 'found';

                // Break loop
                break;
            }
        }       
    }

    // Found
    if ( isset($trialversion) && $trialversion == 'found' ) {
        echo '<div id="my-new-field">';

        woocommerce_form_field( 'my_checkbox', array(
            'type'          => 'checkbox',
            'class'         => array('input-checkbox'),
            'label'         => __('I agree'),
            'required'  => true,
        ), $checkout->get_value( 'my_checkbox' ));

        echo '</div>';
    }
}
add_action('woocommerce_after_order_notes', 'my_custom_checkout_field', 10, 1 );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过WooCommerce产品设置中的自定义复选框将类添加到WooCommerce页面

自定义复选框显示或隐藏Woocommerce结帐中的自定义通知

通过WooCommerce产品设置中的自定义复选框禁用添加到购物车按钮

根据WooCommerce中的自定义字段值将文本添加到订单摘要

自定义复选框,在WooCommerce购物车页面中添加费用

根据自定义管理复选框的条件更改商店档案上的“添加到购物车”按钮

将图像添加到自定义复选框

将复选框列添加到自定义QSortFilterProxyModel

如何将图像添加到自定义复选框的背面

无法保存WooCommerce结帐的自定义复选框值

如何从WooCommerce结帐保存自定义复选框字段状态?

根据WooCommerce产品自定义库存状态禁用添加到购物车按钮

将Woocommerce Zoom添加到自定义画廊

在woocommerce结帐页面自定义字段中添加日期

根据WooCommerce结帐页面上的产品类别应用自定义数量参数

根据Woocommerce中购物车项目的数量添加自定义结帐字段

根据Woocommerce中的产品类别添加自定义结帐字段

将结帐自定义字段数据添加到运输包装中以在WooCommerce中进行计算

购物车页面Woocommerce中的自定义“条款和条件”接受复选框

在WooCommerce Thankyou页面上显示自定义复选框字段状态

woocommerce将自定义结帐字段添加到电子邮件

将用户自定义帐户字段添加到WooCommerce结帐

在WooCommerce中将自定义结帐字段值添加到客户订单注释中

根据自定义字段和自定义日期设置 WooCommerce 价格(不工作)

在管理面板中向woocommerce quickedit添加自定义复选框

向WooCommerce产品变体选项中添加自定义复选框

Woocommerce 优惠券添加自定义复选框

复选框字段,用于在WooCommerce中添加/删除自定义费用

在WooCommerce结帐中添加一个自定义复选框,该值以管理员编辑顺序显示