如何以编程方式更改自定义 woocommerce 复选框标签?

How do I change a custom woocommerce checkbox label programmatically?

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

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';
    
        }
}

但它不起作用,我不确定如何进行。 我需要在选中复选框时更改标签。

我需要一些说明。 您是希望在选中复选框时更改标签,还是希望在加载页面且用户之前选中它时更改标签?

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

<b> 标签指定一个 ID。 (我给了它 id="the_label")并在你的脚本文件中添加脚本(推荐)或者在你的代码中的 <body> 之后添加它(不推荐)。

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

        jQuery('#chosen_packing').click(function (){
            labelChanger();
        });

    </script>

希望对您有所帮助。如果您没有得到答案,请给我一些说明。