如何以编程方式更改自定义 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>
希望对您有所帮助。如果您没有得到答案,请给我一些说明。
我在结帐页面中有这个自定义复选框:
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>
希望对您有所帮助。如果您没有得到答案,请给我一些说明。