我想从woocommerce编辑帐户页面中删除电子邮件字段,以防止用户更改其电子邮件地址。
通过编辑myaccount / form-edit-account.php模板可以轻松删除前端部分。但它只是来自形式。
我想从后端删除,所以没有人可以将带有电子邮件名称的文本框放到表单中并更改电子邮件。
执行编辑过程的后端函数在这里
https://github.com/woothemes/woocommerce/blob/master/includes/class-wc-form-handler.php#L141
如您所见,没有过滤器或操作可以排除处理中的电子邮件。
任何帮助将不胜感激。
解决方案(感谢@Reigel)
正如我所说,我已从模板文件中删除了电子邮件字段,但恶意用户可以使用account_email注入输入字段并更改电子邮件。我想要的是忽略POSTED电子邮件,如果有的话。
所以使用woocommerce_save_account_details_errors
动作,可以这样做
类示例
add_action( 'woocommerce_save_account_details_errors', array( $this, 'remove_email_from_edit_account_process' ), 10,
2 );
public function remove_email_from_edit_account_process( $errors, $user ) {
if ( ! empty( $user->user_email ) ) {
unset($user->user_email);
}
}
答案 0 :(得分:2)
使用woocommerce_save_account_details_errors
操作提供错误消息,指出电子邮件字段无法更改...