【问题标题】:How do I change a custom woocommerce checkbox label programmatically?如何以编程方式更改自定义 woocommerce 复选框标签?
【发布时间】:2021-10-23 16:21:20
【问题描述】:

我在结帐页面中有这个自定义复选框:

add_action('woocommerce_after_checkout_billing_form', 'checkout_shipping_form_packing_addition', 20);
function checkout_shipping_form_packing_addition()
{
    $domain = 'woocommerce';
    echo '<tr class="packing-select";>' . __('', $domain) . '<td>';

    $chosen   = WC()->session->get('chosen_packing');

    // Add a custom checkbox field
    $variable = <<<XYZ
<html>
<body>
 <p style="font-size:15px; margin-top: -38px; margin-left: 5px; height:auto; border:1px; border-style:solid; border-color:#FF0000; padding: 20px;"><b>Consegna rapida?</b></p>
</body>
</html>
XYZ;
    woocommerce_form_field('chosen_packing', array(
        'type'      => 'checkbox',
        'class'     => array('form-row-wide packing'),
        'label'     => __($variable, 'woocommerce'),
        'required'  => false,
    ), $chosen);

    echo '</td></tr>';
}

我希望标签在被选中时改变,所以我尝试添加这个

add_action('woocommerce_after_checkout_billing_form', 'my_custom_checkout_field_process2');
 
function my_custom_checkout_field_process2() {
    global $woocommerce;
 
    // Check if set, if its not set add an error.
    if (isset($_POST['chosen_packing'])){
        
        $_POST['chosen_packing']['label'] = 'no';
    
        }
}

但它不起作用,我不确定如何进行。 I need the label to change whenever the checkbox is checked.

【问题讨论】:

    标签: javascript php wordpress woocommerce checkbox


    【解决方案1】:

    我需要澄清一下。 您希望在选中复选框时更改标签,还是希望在加载页面并且用户之前检查过时更改标签?

    如果您想在用户单击复选框时更改标签,您应该使用 JavaScript。 使用 PHP,您可以在页面重新加载时执行此操作。 因此,这是一个 JS 代码,当用户单击复选框时,该代码会将标签更改为“否”。 此外,您不需要 'my_custom_checkout_field_process2' 函数。

    &lt;b&gt;标签一个id。 (我给了它 id="the_label")并将脚本添加到您的脚本文件中(推荐)或在代码中的 &lt;body&gt; 之后添加它(不推荐)。

    <script>
            function labelChanger(){
                if (jQuery('#chosen_packing:checked')){
                    jQuery('#the_label').html('no');
                }
            }
    
            jQuery('#chosen_packing').click(function (){
                labelChanger();
            });
    
        </script>
    

    希望对你有帮助。如果你没有得到答案,请给我一些澄清。

    【讨论】:

    • TY 它的工作!但是,当我取消选中它时,标签保持不变,我尝试添加“else jQuery('#the_label').html('yes');”在('否')之后;但它并没有改变它
    • 好的设法使它工作,但我不得不对其进行重大更改,这是有效的新代码:
    猜你喜欢
    • 2023-01-10
    • 2015-10-15
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多