我想从woocommerce编辑帐户页面中删除电子邮件字段,以防止用户更改其电子邮件地址。
通过编辑我的帐户/表单编辑帐户.php模板来删除前端部分非常容易。但这只是从形式上看。
我也想从后端删除,所以没有人可以将带有电子邮件名称的文本框放在表单中并更改电子邮件。
执行编辑过程的后端函数在这里
https://github.com/woothemes/woocommerce/blob/master/includes/class-wc-form-handler.php#L141
如您所见,没有过滤器或操作将电子邮件排除在处理之外。
任何帮助将不胜感激。
解决方案(感谢@Reigel)
正如我所说,我已经从模板文件中删除了电子邮件字段,但恶意用户可以注入带有account_email的输入字段并更改电子邮件。我想要的是忽略 POST 电子邮件,如果有的话。
因此,使用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);
}
}
使用woocommerce_save_account_details_errors
操作来显示错误消息,指出无法更改电子邮件字段...