根据 WooCommerce 购物车中的产品 ID 设置结帐字段的默认值

问题描述 投票:0回答:1

我隐藏了

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;
          }}
php wordpress woocommerce hook-woocommerce cart
1个回答
1
投票

您可以通过

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 );

相关:根据产品 ID 更改 WooCommerce 结账订单备注占位符和标签

© www.soinside.com 2019 - 2024. All rights reserved.