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

标签 php jquery wordpress woocommerce hook-woocommerce

我需要将 woocommerce 设置为我的帐户/编辑帐户/页面电子邮件、姓氏或其他字段。一个字段或两个字段,只读。

我的解决方案是编辑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 文件的代码。

最佳答案

您也可以使用 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 文件中。经过测试并有效。


或者如倒数第二个问题一样,您将使用 Hook 函数将 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 添加只读属性(可能是最好的方法)
  • 通过主题覆盖模板(添加只读属性)
  • 添加具有只读属性的自定义帐户字段

关于php - 在 Woocommerce 中将我的帐户编辑帐户字段设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106070/

相关文章:

php - WooCommerce 管理员产品自定义复选框字段不保存值

php - 什么是 PHP 共享内存(mm,--with-mm) session 模块?

php - jQuery/JSON/PHP 失败

javascript - 菜单不是绝对 href 与位置 href 问题比较

wordpress - woocommerce 订单放置在 wordpress 数据库中的哪个位置

php - 从 Laravel 中的模型获取表名称

Jquery validate 隐藏 kendo-ui 控件

javascript - 如果找到父 div.class,则删除单选按钮类

mysql - 如何在 Wordpress 网站上显示数据库查询统计信息?

WordPress 不导出或导入特色图像