如何将Woocommerce结帐页面字段设置为只读

时间:2018-06-27 07:40:37

标签: woocommerce hook-woocommerce

用于编辑woocommerce(WordPressss插件)帐户页面字段,并使其成为只读,易于编辑的woocommerce/templates/myaccount/form-edit-account.php文件,并且仅将只读添加到字段结尾标记结束(对不起,我的英语水平和编程水平都不高且专业)

但是对于编辑woocommerce的结帐页面字段,并将一个或两个或多个字段(例如,电子邮件字段)设置为只读,则无法采用上述方法

请帮我做,我不知道。

如果教我通过functions.php轻松,更好,更持久的方式(如果可能)做到这一点会更好。

再次感谢您

2 个答案:

答案 0 :(得分:1)

您可以在主题的“ function.php”文件中使用以下代码。

  add_action('woocommerce_checkout_fields','customization_readonly_billing_fields',10,1);
        function customization_readonly_billing_fields($checkout_fields){
            $current_user = wp_get_current_user();;
            $user_id = $current_user->ID;
            foreach ( $checkout_fields['billing'] as $key => $field ){
                if($key == 'billing_address_1' || $key == 'billing_address_2'){
                    $key_value = get_user_meta($user_id, $key, true);
                    if( strlen($key_value)>0){
                        $checkout_fields['billing'][$key]['custom_attributes'] = array('readonly'=>'readonly');
                    }
                }
            }
            return $checkout_fields;
        }

此函数将检查地址字段是否具有值(即是否指定了地址),并且如果它具有值,则使该字段为只读。其他使字段保持打开状态以为用户添加数据。您可以对每个必填字段应用相同的概念。

希望这会有所帮助。

谢谢!

答案 1 :(得分:0)

非常感谢您的回答amritosh pandey先生 该代码正常工作

仅电子邮件字段,请删除:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

然后我更改为

if($key == 'billing_address_1' || $key == 'billing_address_2'){

并完美,正确地工作

我的新任务是>如果用于两个字段,例如:手机(tel)和电子邮件或更多字段 我应该重复所有代码吗? 从add_action返回$ checkout_fields; }

或可以重复 if($ key行2或3或更多?

示例:

if($key == 'billing_email'){

谢谢