我尝试在WooCommerce结帐页面默认“选中"复选框。我使用官方WooCommerce结帐字段编辑器插件添加复选框,但它不给予我默认”选中“复选框的能力。
我已经尝试使用此代码,但它不工作:
function custom_override_checkout_fields ( $fields ) {
$fields['additional']['uncheck-to-opt-out-of-our-quarterly-newsletter-neuroscience-matters_field']['default'] = 1;
return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
任何帮助都将不胜感激。谢谢
2条答案
按热度按时间unftdfkk1#
你应该使用下面的代码在结帐页面上添加复选框:
0yg35tkg2#
要定义使用
woocommerce_checkout_fields
钩子设置的自定义WooCommerce字段的默认值,最好将另一个过滤函数与woocommerce_checkout_get_value
或default_checkout_<your_field_name>
钩子挂钩。woocommerce_checkout_get_value
:这是一个短路过滤器,这意味着如果您使用它,
$value
将始终从null
开始,如果返回的$value
不是null
,它将阻止任何尝试读取用户元数据以获得任何先前定义的用户首选项。从某种意义上说,这是一种硬违约:对于每次结帐,它使用在该过滤器中定义的值。
default_checkout_<your_field_name>
:它的行为与上面的行为类似,但是它是在从登录用户的默认值读取默认值之后调用的,默认值可能已经在之前设置为给定用户的元数据(例如,如果用户之前已经购买,则在最后一次结帐时保存)。
这可以被视为软默认,因为需要进行适当的检查(如下所示:如果
null
,则仅设置$value
),则仅在没有现有用户首选项时应用默认值。此外,由于它使用了由字段名定义的专用钩子名,因此不需要检查调用函数的字段。
有关更多上下文,请查看
wp-content/plugins/woocommerce/includes/class-wc-checkout.php
中调用这两个过滤器的WC_Checkout::get_value()
方法。