Php 如何禁用电子商务签出页面中的字段

Php 如何禁用电子商务签出页面中的字段,php,woocommerce,filter-woocommerce,Php,Woocommerce,Filter Woocommerce,我正在尝试禁用签出页面上的地址1和地址2字段。 我已经在我的账户页面上使用了下面的工作代码,我试图在结帐页面编辑后使用该代码来禁用地址1和地址2字段。但不幸的是,它不起作用,请帮忙 add_filter( 'woocommerce_checkout_fields', 'readonly_billing_account_fields', 25, 1 ); function readonly_billing_account_fields ( $billing_fields ) { // On

我正在尝试禁用签出页面上的地址1和地址2字段。 我已经在我的账户页面上使用了下面的工作代码,我试图在结帐页面编辑后使用该代码来禁用地址1和地址2字段。但不幸的是,它不起作用,请帮忙

add_filter( 'woocommerce_checkout_fields', 'readonly_billing_account_fields', 25, 1 );
function readonly_billing_account_fields ( $billing_fields ) {
    // Only my account billing address for logged in users
    if( is_user_logged_in() && is_account_page() ){

        $readonly = ['readonly' => 'readonly'];

        $billing_fields['address_1']['custom_attributes'] = $readonly;
        $billing_fields['address_2']['custom_attributes'] = $readonly;
    }
    return $billing_fields;
}
根据您的情况添加
is\u checkout()
,然后将字段更改为billing\u address\u 1和2

add_filter( 'woocommerce_checkout_fields', 'readonly_billing_account_fields', 25, 1 );
function readonly_billing_account_fields ( $billing_fields ) {
    // Only my account billing address for logged in users
    if( (is_user_logged_in() && is_account_page()) || is_checkout()){

        $readonly = ['readonly' => 'readonly'];

        $billing_fields['billing']['billing_address_1']['custom_attributes'] = $readonly;
        $billing_fields['billing']['billing_address_2']['custom_attributes'] = $readonly;
    }
    return $billing_fields;
}

只要完全删除您的
IF
语句,那么
IF(is\u user\u logged\u in()&is\u account\u page()){
和相关的结束括号作为hook
woocommerce\u checkout\u字段
只在签出页面上使用,因此不需要任何东西。感谢您的评论,我试过了,但它对我不起作用,不管怎样,我得到了我的答案:)抱歉,但这是有效的…没有必要使用if语句作为hook
woocommerce\u checkout\u字段仅在结帐页面中触发。因此下面的答案不正确。现在需要将
$billing_字段['address_1']['custom_attributes']
替换为
$billing_字段['billing']['billing_address_1']['custom_attributes']
但它适用于您代码中的菜单
$billing fields['address_1'['custom_attributes']=$readonly;
需要替换为
$billing\u字段['billing']['billing\u address\u 1']['custom\u attributes']=$readonly;
$billing\u字段['address\u 2']['custom\u attributes']=$readonly;
需要替换为
$billing\u字段['billing'['billing\u address\u 2'['custom\u attributes']=$readonly;
…它将在没有任何IF语句的情况下工作。