我正在制作一个wordpress网站,如果有人知道这个,我有一个问题。我想要的是他们可以在结账时注册他们的电子邮件,然后一旦他们的帐户完全创建,他们就不能再在“帐户详细信息”页面上更改他们的电子邮件。这可能吗?
提前致谢
答案 0 :(得分:1)
阻止修改电子邮件地址的唯一方法是将 form-edit-account 复制到主题目录的WooCommerce子目录中,并从WooCommerce模板中删除电子邮件字段 \ myaccount \ form-edit-account.php 您需要使用此过滤器将电子邮件删除为必填字段。您无法真正显示该字段并阻止用户更新,这是此解决方案的唯一问题。您可以添加功能,在编辑帐户表单或我的帐户页面的其他位置显示用户的电子邮件地址,以解决此问题。
add_filter('woocommerce_save_account_details_required_fields', 'remove_required_email_address');
function remove_required_email_address( $required_fields ) {
unset($required_fields['account_email']);
return $required_fields;
}
答案 1 :(得分:0)
您可以在谷歌搜索并找到太多答案
要快速回答,您可以使用function.php
function custom_override_checkout_fields( $fields ) {
unset($fields['billing']['billing_email']);
return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields', 1000, 1 );
答案 2 :(得分:0)
我想要的是他们可以在结账时注册他们的电子邮件,然后一旦他们的帐户完全创建,他们就不能再在“帐户详细信息”页面上更改他们的电子邮件。这可能吗?
答案 3 :(得分:0)
我找到了一种对我有用的方法。
我在woocommerce_after_edit_account_form中使用钩子在页面末尾添加了一些javascript,此javascript使“ account_email”字段为只读,因此用户无法更新它。
add_action( 'woocommerce_after_edit_account_form', 'disable_edit_email_address' );
function disable_edit_email_address( ) {
$script = '<script type="text/javascript">'.
'var account_email = document.getElementById("account_email");'.
'if(account_email) { '.
' account_email.readOnly = true; '.
' account_email.className += " disable-input";'.
'}'.
'</script>';
echo $script;
}
另外,您可以看到,我使用样式“ disable-input”来使输入不透明:
.disable-input {
opacity: .6;
}
致谢