gpt4 book ai didi

php - Woocommerce:设置结帐字段值

转载 作者:可可西里 更新时间:2023-11-01 13:39:47 24 4
gpt4 key购买 nike

对于在我的系统中还不是 WP 用户的特殊客户群,我将他们引导到一个特殊页面,他们将从一组有限的产品中进行选择。我已经拥有了他们的所有信息,并且我将在这个登陆页面上预先填充这些信息。当他们验证了他们的信息后,它会将他们的产品添加到购物车并直接跳到结帐处。到目前为止,我已经了解了所有这些。

我想做的是用我拥有的客户名称和账单信息预填充结账数据,但我不确定如何做到这一点。但这是我到目前为止所得到的:

    function onboarding_update_fields( $fields = array() ) {

$token = ( ! empty( $_GET['token'] ) ) ? $_GET['token'] : '';
if( 'testtoken' == $token ) {
$fields['billing']['billing_first_name']['value'] = 'Joe';
var_dump( $fields );
}
return $fields;
}

add_filter( 'woocommerce_checkout_fields', 'onboarding_update_fields' );

如何更改结帐字段的值?上面的代码没有这样做。为我指明正确的方向,剩下的由我来做。

我看了here但也没有完全找到我要找的东西。

谢谢!

最佳答案

您应该使用这个专用的 WooCommerce Hook ,用于预填充结帐字段并在 WC_Checkout 方法中定义 get_value() :

add_filter( 'woocommerce_checkout_get_value', 'populating_checkout_fields', 10, 2 );
function populating_checkout_fields ( $value, $input ) {

$token = ( ! empty( $_GET['token'] ) ) ? $_GET['token'] : '';

if( 'testtoken' == $token ) {
// Define your checkout fields values below in this array (keep the ones you need)
$checkout_fields = array(
'billing_first_name' => 'John',
'billing_last_name' => 'Wick',
'billing_company' => 'Murders & co',
'billing_country' => 'US',
'billing_address_1' => '7 Random street',
'billing_address_2' => 'Royal suite',
'billing_city' => 'Los Angeles',
'billing_state' => 'CA',
'billing_postcode' => '90102',
'billing_phone' => '555 702 666',
'billing_email' => 'jhon.wick@murders.com',
'shipping_first_name' => 'John',
'shipping_last_name' => 'Wick',
'shipping_company' => 'Murders & co',
'shipping_country' => 'USA',
'shipping_address_1' => '7 Random street',
'shipping_address_2' => 'Royal suite',
'shipping_city' => 'Los Angeles',
'shipping_state' => 'California',
'shipping_postcode' => '90102',
// 'account_password' => '',
'order_comments' => 'This is not for me',
);
foreach( $checkout_fields as $key_field => $field_value ){
if( $input == $key_field && ! empty( $field_value ) ){
$value = $field_value;
}
}
}
return $value;
}

代码位于您的事件子主题(或主题)的 function.php 文件中或任何插件文件中。

If user is not logged in, you could add additionally in your condition:

 if( 'testtoken' == $token &&  ! is_user_logged_in() ) {

此代码已经过测试并有效(但未针对您的特定代码条件进行测试)。对于我的测试,我使用了 ! is_user_logged_in() 作为条件。

你会得到这个(对于函数中定义的数组):

enter image description here

关于php - Woocommerce:设置结帐字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45602936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com