안녕하세요? 일부 이메일 제공자에서 메일을 스팸으로 분류해버려서 지속적으로 문제가 되고 있습니다.
이를 막기 위해 가입시 이메일 nameholder에 특정 이메일을 쓰지말라고 해도 열심히 가입을 해주시더라구요.
스레드를 찾아보니 특정 이메일로만 가입을 하는 코드는 적어주셨는데 혹시 특정 이메일로 가입할때 안되게 변경할 수 있을까요?
Mailgun을 통해 워드프레스 및 우커머스 이메일을 처리하고 있는데 다음,한메일,카카오 애들이 광고성 메세지가 아닌 주문 결제 완료 같은 이메일도 싹다 스팸처리 해버려서 계속 이떄문에 여러 처리를 추가적으로 하게 되네요.
add_filter('wpmem_pre_validate_form', 'my_wpmem_pre_validate_form', 10, 2);
function my_wpmem_pre_validate_form($fields, $toggle){
$user_email = isset($fields['user_email'])&&$fields['user_email'] ? $fields['user_email'] : '';
if($user_email){
$approved_email = array('@cosmosfarm.com', '@gamil.com');
$check = false;
foreach($approved_email as $email){
if(strpos($user_email, $email)){
$check = true;
}
}
if(!$check){
echo "<script>alert('등록할 수 없는 이메일입니다.')</script>";
echo "<script>window.history.back();</script>";
exit;
}
}
return $fields;
}
안녕하세요~^^
올려주신 코드를 기준으로 특정 이메일로 가입을 하지 못하게 하시려면
array('@cosmosfarm.com', '@gamil.com') 부분의 이메일 주소를
가입하지 못하게 하시려면 메일로 교체해보세요.
그 다음, !$check 부분을 $check로 교체해보시겠어요?
고맙습니다.
add_filter('wpmem_pre_validate_form', 'my_wpmem_pre_validate_form', 10, 2);
function my_wpmem_pre_validate_form($fields, $toggle){
$user_email = isset($fields['user_email'])&&$fields['user_email'] ? $fields['user_email'] : '';
if($user_email){
$approved_email = array(‘@daum.net’, ‘@kakao.com’, ‘@hanmail.net’);
$check = false;
foreach($approved_email as $email){
if(strpos($user_email, $email)){
$check = true;
}
}
if($check){
echo "<script>alert('등록할 수 없는 이메일입니다.')</script>";
echo "<script>window.history.back();</script>";
exit;
}
}
return $fields;
}
다음과 같이 코드를 적용하였더니 중복확인이 처리가 안되는거 같습니다.
코드 미적용시 정상적으로 중복 확인 관련 팝업이 발생, 코드 적용시 클릭을 해도 팝업이 발생하지 않습니다.
두가지는 공존할수 없는건가요..?
기존의 코드를 유지하면서 같은 필터로 새로운 코드를 적용하고 싶으신 건지요?
워드프레스 필터는 중복해서 여러 개 사용할 수 있지만
PHP 함수명은 중복되어선 안 됩니다.
새로 추가하는 코드에서 my_wpmem_pre_validate_form 부분을
my_wpmem_pre_validate_form1 이런 식으로 모두 교체해서 확인해보시겠어요?
고맙습니다.
관련 에러 : /opt/bitnami/apps/wordpress/htdocs/wp-content/themes/flatsome-child/functions.php 파일의 457 줄에서 오류타입 E_PARSE 가 발생했습니다. 오류메시지: syntax error, unexpected '@', expecting ')'
457번 Line입니다.
$approved_email = array(‘@daum.net’, ‘@kakao.com’, ‘@hanmail.net’, ‘@gamil.com’);
중복이라는 뜻은 홈페이지 가입시 확인하는 중복 확인 버튼을 말씀드린거에요.
https://www.dropbox.com/s/y7phgqyksrwjj2q/Screenshot%202019-11-23%2016.24.38.png?dl=0
mfsound.co.kr
안녕하세요.
올려주신 코드 중에서 따옴표 처리가 잘못된 듯합니다.
아래의 코드로 교체해서 확인해보시겠어요?
add_filter('wpmem_pre_validate_form', 'my_wpmem_pre_validate_form', 10, 2);
function my_wpmem_pre_validate_form($fields, $toggle){
$user_email = isset($fields['user_email'])&&$fields['user_email'] ? $fields['user_email'] : '';
if($user_email){
$approved_email = array('@daum.net', '@kakao.com', '@hanmail.net');
$check = false;
foreach($approved_email as $email){
if(strpos($user_email, $email)){
$check = true;
}
}
if($check){
echo "<script>alert('등록할 수 없는 이메일입니다.')</script>";
echo "<script>window.history.back();</script>";
exit;
}
}
return $fields;
}
고맙습니다.
감사합니다. 정상 작동 확인되었습니다!