将结帐结算公司字段设为只读,使其在Woocommerce中保持活动状态

时间:2018-12-18 20:54:47

标签: php wordpress woocommerce checkout readonly

需要使输入仅在WooCommerce 3.0的结帐中为只读,但仍将原始内容传递给订单。在这种情况下,需要将订单传递给FishBowl。

我在这里尝试了许多方法。这是最新的...

add_action('woocommerce_form_field_args', 'disable_company_input', 10, 3);


function disable_company_input($args, $key, $value)
{
    if ($key == 'billing_company') {
        $args['custom_attributes'] = [
            'disabled' => 'disabled',
        ];
    }
    return $args;
}

add_action('woocommerce_after_order_notes', 'billing_company_hidden_field');

function billing_company_hidden_field($checkout)
{

    echo '<input type="hidden" class="input-hidden" name="billing_company">';

}

我正在尝试禁用用户更改billing_company的功能,此代码确实完成了该操作,但是仍将其传递给最终订单,我似乎无法做到这一点。

非常感谢您能提供帮助。

1 个答案:

答案 0 :(得分:0)

请尝试以下操作,而不是(因为文本字段必须为readonly,而不是disabled

add_filter( 'woocommerce_checkout_fields' , 'custom_checkout_fields' );
function custom_checkout_fields( $fields ) {
    $fields['billing']['billing_company']['custom_attributes']['readonly'] = 'readonly';

    return $fields;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

  

如果存在某些数据,它将显示在此字段上,但是客户将无法添加或更改输入,因为它将是“只读”。


添加-检查结算公司是否没有价值,并隐藏/删除该字段:

add_filter( 'check_billing_company_checkout_field' , 'check_billing_company_checkout_field' );
function billing_company_checkout_field( $fields ) {
    $billing_company = WC()->customer->get_billing_company();

    if( empty( $billing_company ) ) { // Remove field
        unset($fields['billing']['billing_company']); 
    } else { // Make readonly
        $fields['billing']['billing_company']['custom_attributes']['readonly'] = 'readonly'; 
    }

    return $fields;
}

代码进入您的活动子主题(或活动主题)的function.php文件中