如何将Woocommerce签出页字段设置为只读

如何将Woocommerce签出页字段设置为只读,woocommerce,hook-woocommerce,Woocommerce,Hook Woocommerce,用于编辑woocommerce(WordPressss插件)帐户页面字段,并使其成为只读的,易于编辑woocommerce/templates/myaccount/form edit account.php文件,并且仅将只读添加到字段末尾标记end(很抱歉,我的英语和编程不专业且不好) 但对于编辑woocommerce签出页面字段,并将一个或两个及更多字段(例如,电子邮件字段)设置为只读,则无法使用前面的方法 请帮我做这件事,我不知道 如果,教我用functions.php轻松、更好、持久的方式

用于编辑
woocommerce
(WordPressss插件)帐户页面字段,并使其成为只读的,易于编辑
woocommerce/templates/myaccount/form edit account.php
文件,并且仅将只读添加到字段末尾标记end(很抱歉,我的英语和编程不专业且不好)

但对于编辑
woocommerce
签出页面字段,并将一个或两个及更多字段(例如,电子邮件字段)设置为只读,则无法使用前面的方法

请帮我做这件事,我不知道

如果,教我用functions.php轻松、更好、持久的方式(如果可能的话)来实现它,那会更好


再次感谢您

您可以在主题的“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;
        }
此函数将检查地址字段是否有值(即是否指定了地址),如果有值,则将字段设置为只读。Else使字段保持打开状态,以便为用户添加数据。您可以对每个必填字段应用相同的概念

希望这有帮助


谢谢大家!

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

仅针对电子邮件字段,删除:

if($key == 'billing_address_1' || $key == 'billing_address_2'){
我改成

if($key == 'billing_email'){
完美而正确地工作

我的新问题是>如果用于两个字段,例如:移动(电话)和电子邮件或更多字段 我应该重复所有代码吗? 从add_操作返回$checkout_字段;}

或者可以重复 如果($关键行2或3或更多

例如:

...
...
if($key == 'billing_email'){
if($key == 'billing_phone'){
if($key == 'billing_postcode'){
...
...

谢谢你

非常感谢你回答amritosh pandey先生,此代码正确。我在我的第一个问题下面发布了新问题。如果可能的话,请再次回答我的新问题,并再次感谢你。是的,我已经发布了我的+投票。但刷新页面后看不到我对你答案的aded投票!我投票后收到以下通知:感谢您的反馈!记录声誉低于15的人的投票,但不要更改公开显示的帖子分数。再次感谢您您可以在代码中对多个字段使用或条件。例如-`if($key=='billing_address_1'| |$key='billing_address_2'| |$key='billing_email'| |$key=='billing_phone'| |$key='billing u postcode'){`请检查一下,让我知道它是否适合你。你是最好的,这也很好而且正确,非常感谢@amritosh pandey