【问题标题】:Make checkout billing company field readonly keeping it active in Woocommerce将结帐计费公司字段设为只读,使其在 Woocommerce 中保持活跃
【发布时间】:2019-05-19 08:04:09
【问题描述】:

需要在 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 的功能,此代码确实完成了此操作,但仍将其传递给最终订单,我似乎无法做到这一点。

如果您能提供帮助,非常感谢。

【问题讨论】:

    标签: php wordpress woocommerce checkout readonly


    【解决方案1】:

    改用以下方法(因为文本字段需要是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 文件中。经过测试并且可以工作。

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


    添加 - 检查 Billing company 是否没有价值并隐藏/删除该字段:

    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 文件中

    【讨论】:

    • 谢谢@LoicTheAztec,这对客户的需求很有用。感谢您抽出宝贵时间对此做出回应。我还有很多东西要学;)您知道只有在结帐页面之前该字段中不存在任何内容的情况下才能使 billing_company 可用吗?但是如果有内容仍然锁定它?我个人认为这将是一个比客户最初想要的更好的用户体验。
    • @JordanStoddard 我在答案末尾添加了一个应该可以解决问题的附加项(未经测试)......现在如果答案回答了您的问题,您可以请accept回答,谢谢。
    猜你喜欢
    • 2016-07-15
    • 2021-12-11
    • 2018-03-09
    • 2018-12-20
    • 2018-06-23
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多