Forms form-edit-address.php文件中变量$address的数据来自何处?
您好,我正在尝试编辑Forms form-edit-address.php文件中变量$address的数据来自何处?,forms,variables,woocommerce,Forms,Variables,Woocommerce,您好,我正在尝试编辑my account.php,我正在使用wc\u get\u template()调用表单edit address.php,如下所示: 但我得到了一个错误: 注意:未定义变量:第42行…/woocommerce/myaccount/form-edit-address.php中的地址 我试图通过添加以下行来解决此问题: $address=WC()->国家->获取地址字段() 转到表单edit address.php文件 但是这不起作用,因为这个$address变量没有的“值
my account.php
,我正在使用wc\u get\u template()
调用表单edit address.php
,如下所示:
但我得到了一个错误:
注意:未定义变量:第42行…/woocommerce/myaccount/form-edit-address.php中的地址
我试图通过添加以下行来解决此问题:
$address=WC()->国家->获取地址字段()代码>
转到表单edit address.php
文件
但是这不起作用,因为这个$address
变量没有的“值”
只是字段的名称
当我直接使用这个URL访问表单edit address.php
时:变量$address
包含所有需要的信息
如何获取生成填充表单所需的所有数据
谢谢 表单编辑地址。访问端点url“编辑地址”时调用php
。
i、 e“www.example.com/my account/edit address/”。哪个端点url文件继承从父页面url(即“我的帐户”)传递的数据。
因此,如果您正在调用端点url文件,它将不起作用
顺便说一下,如果您签入my address.php
,$address
变量定义在第49行
$address = apply_filters( 'woocommerce_my_account_my_address_formatted_address', array(
'first_name' => get_user_meta( $customer_id, $name . '_first_name', true ),
'last_name' => get_user_meta( $customer_id, $name . '_last_name', true ),
'company' => get_user_meta( $customer_id, $name . '_company', true ),
'address_1' => get_user_meta( $customer_id, $name . '_address_1', true ),
'address_2' => get_user_meta( $customer_id, $name . '_address_2', true ),
'city' => get_user_meta( $customer_id, $name . '_city', true ),
'state' => get_user_meta( $customer_id, $name . '_state', true ),
'postcode' => get_user_meta( $customer_id, $name . '_postcode', true ),
'country' => get_user_meta( $customer_id, $name . '_country', true )
), $customer_id, $name );
这个数组在“formeditdress.php”中使用
如果您调用“formeditaddress.php”作为模板文件,请尝试在foreach循环之前添加上述代码
希望这有帮助。我知道这篇文章已经有两年了,但我今天也在寻找同样的东西。因为当我在谷歌上搜索它时,它首先出现在谷歌上。现在答案已经改变了
$address
变量是在class wc shortcode my account.php中设置的,数组的正确格式都在这里完成
在函数edit_address
第158行中
$load\u address
只是一个变量,根据要加载的地址设置为“billing”或“shipping”
下面是我如何输出编辑账单地址表单的:
$load_address = sanitize_key( 'billing' );
$address = WC()->countries->get_address_fields( get_user_meta( get_current_user_id(), $load_address . '_country', true ), $load_address . '_' );
// Prepare values
foreach ( $address as $key => $field ) {
$value = get_user_meta( get_current_user_id(), $key, true );
if ( ! $value ) {
switch ( $key ) {
case 'billing_email' :
case 'shipping_email' :
$value = $current_user->user_email;
break;
case 'billing_country' :
case 'shipping_country' :
$value = WC()->countries->get_base_country();
break;
case 'billing_state' :
case 'shipping_state' :
$value = WC()->countries->get_base_state();
break;
}
}
$address[ $key ]['value'] = apply_filters( 'woocommerce_my_account_edit_address_field_value', $value, $key, $load_address );
}
//Output code from form-edit-address.php
foreach ( $address as $key => $field ) {
if ( isset( $field['country_field'], $address[ $field['country_field'] ] ) ) {
$field['country'] = wc_get_post_data_by_key( $field['country_field'], $address[ $field['country_field'] ]['value'] );
}
woocommerce_form_field( $key, $field, wc_get_post_data_by_key( $key, $field['value'] ) );
}
希望这能帮助其他寻找相同信息的人
如果您想将表单放在非WC页面上,则需要将国家/地区和地址脚本排队
// Enqueue scripts
wp_enqueue_script( 'wc-country-select' );
wp_enqueue_script( 'wc-address-i18n' );
对我来说,我只是想简化我的结帐流程,所以在创建自定义购物车/结帐系统时不需要它们。我认为这个变量$address
是不同的。文件my address.php
中的$address
不是用来生成表单的,只是为了打印信息,我使用print\r($address)
来检查数据结构,但不相同。请确保它不是用来生成表单的,只是用来打印信息。但相同的信息会传递给编辑表单以加载。上述代码中的$name
变量(在my address.php
上)决定它是“账单”还是“发货”。在上述代码中,尝试使用$load\u address
更改变量$name
。我认为这应该可以解决问题。将$name
更改为$load\u address
只会得到不同的数据、发货或账单,但数据结构将是相同的,不能与原始的表单edit address.php
文件一起使用。当我访问端点时,是否可以复制相同的$address
变量available?