在Woocommerce中将我的帐户编辑帐户字段设为只读

时间:2018-06-29 16:33:43

标签: php jquery wordpress woocommerce hook-woocommerce

我需要使woocommerce成为我的帐户/编辑帐户/页面电子邮件,或者姓氏或其他字段。一两个字段,ReadOnly

我的解决方案是在plugins / woocommerce / templates / myaccount文件夹中编辑form-edit-account.php文件,然后编辑form-edit-account.php文件,并在标签末尾添加 readonly 正确,例如:

<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="account_email"><?php esc_html_e( 'Email address', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
<input type="email" class="woocommerce-Input woocommerce-Input--email input-text" name="account_email" id="account_email" autocomplete="email" value="<?php echo esc_attr( $user->user_email ); ?>" readonly />
</p>

但是我只需要从function.php文件进行此更改。 这可能吗?你可以指导我吗? 我需要functions.php文件的代码 谢谢大家

1 个答案:

答案 0 :(得分:2)

您也可以改用jQuery(此处为“ billing_mobile_phone”字段):

add_action( 'wp_footer' , 'make_phone_field_readonly' );
function make_phone_field_readonly(){
    // Only for account fields
    if( is_account_page() ): ?>
    <script type='text/javascript'>
        jQuery(function($){
            $('form.edit-account input#billing_mobile_phone').prop('readonly', true );
        });
    </script>
    <?php endif;
}

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


或者像倒数第二个问题一样,您将使用将readonly属性添加到附加字段的挂钩函数:

// Display the mobile phone field
// add_action( 'woocommerce_edit_account_form_start', 'add_billing_mobile_phone_to_edit_account_form' ); // At start
add_action( 'woocommerce_edit_account_form', 'add_billing_mobile_phone_to_edit_account_form' ); // After existing fields
function add_billing_mobile_phone_to_edit_account_form() {
    $user = wp_get_current_user();
    ?>
     <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="billing_mobile_phone"><?php _e( 'Mobile phone', 'woocommerce' ); ?> <span class="required">*</span></label>
        <input type="text" class="woocommerce-Input woocommerce-Input--phone input-text" name="billing_mobile_phone" id="billing_mobile_phone" value="<?php echo esc_attr( $user->billing_mobile_phone ); ?>" readonly />
    </p>
    <?php
}

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


因此,您总共有3种选择:

  • 使用jQuery添加readonly属性(可能是最好的方法)
  • 通过主题覆盖模板(添加只读属性)
  • 添加具有只读属性的自定义帐户字段