我隐藏了
billing_email
字段,并为此字段设置了默认值,即特定的电子邮件地址。
我在functions.php中插入的代码如下:
add_filter( 'woocommerce_checkout_fields' , 'default_values_checkout_fields' );
function default_values_checkout_fields( $fields ) {
// You can use this for postcode, address, company, first name, last name and such.
$fields['billing']['billing_email']['placeholder'] = '[email protected]';
$fields['billing']['billing_email']['autocomplete'] = '[email protected]';
$fields['billing']['billing_email']['default'] = '[email protected]';
return $fields;
}
我实际上想根据所购买的产品将不同的电子邮件设置为默认电子邮件。 (已经购物车只允许一种产品)。
这些值可以通过以下代码片段所示的条件来设置吗?
add_filter( 'woocommerce_checkout_fields' , 'default_values_checkout_fields' );
function default_values_checkout_fields( $fields ) {
// You can use this for postcode, address, company, first name, last name and such.
if $product_id === 17 {
$fields['billing']['billing_email']['placeholder'] = '[email protected]';
$fields['billing']['billing_email']['autocomplete'] = '[email protected]';
$fields['billing']['billing_email']['default'] = '[email protected]';
return $fields;
}}
您可以通过
WC()->cart->get_cart(),
浏览购物车商品,然后如果产品 ID 存在,您就可以应用条件
所以你得到:
function filter_woocommerce_checkout_fields( $fields ) {
// Set your targeted product ID(s)
$targeted_ids = array( 17, 30 );
// Initializing
$found = false;
// Loop through cart items
foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( array_intersect( $targeted_ids, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {
$found = true;
break;
}
}
// True
if ( $found ) {
// You can use this for postcode, address, company, first name, last name and such.
$fields['billing']['billing_email']['placeholder'] = '[email protected]';
$fields['billing']['billing_email']['autocomplete'] = '[email protected]';
$fields['billing']['billing_email']['default'] = '[email protected]';
}
return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'filter_woocommerce_checkout_fields', 10, 1 );