【发布时间】:2020-07-15 07:27:38
【问题描述】:
我使用以下代码为我的产品添加了一个额外的变体选项:
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' );
}
}
}
这很好用,它显示在变体中,并正确保存在数据库中。
到目前为止,一切都很好。
现在,如果产品被标记为“试用版”,我想在结帐时添加一个额外的复选框。我也在使用“Germanized”插件,它具有自定义复选框的选项,但我无法让它识别我使用上述代码所做的更改。
如何为我的试用版变体完成自定义复选框?不管有没有德国化,在这一点上我只想让它工作。也许有一个免费的插件,但如果我可以通过添加一些代码来做到这一点,那可能会更容易。
该复选框必须是完成购买试用版的必填项。
希望有人知道如何做到这一点。期待您的回复!
【问题讨论】:
-
上述操作在第一个实例中是否正确,但如果您之后关闭一个复选框,它仍然处于“打开”状态?
-
不,该功能运行良好。也许我没有正确表达我的问题。上面的代码有效。但是我现在需要的是在结帐过程中显示的带有文本的必填复选框(类似于接受条款和服务),当产品变体启用“试用版”时。
-
如果我在上面运行你的代码,打开复选框,保存然后关闭,再次保存...它将保持打开状态
-
看来你是对的,我很抱歉。虽然这不是我要解决的问题,但这是添加到列表中的另一个问题。谢谢你告诉我。
标签: php wordpress woocommerce hook-woocommerce checkout