詳細検索

체크인 연락처 DB

아바타
글쓴이 すがピー
4분 읽기

체크인 연락처 DB
日本語에서 번역 • 원문 보기

Contact Form DB에서 테이블에 삽입하기 전에 어떤 점검을 하고 싶다면 훅을 사용하세요.

함수 my_form_chk( $cf 7 ) { 

            입력 양식 값 가져오기
            foreach ($cf 7->posted_data $posted_name => $posted_value) { 
                원래 값은 변하지 않으므로 다른 변수로 변경됩니다
                $posted_name_2 = $posted_name; 
                $posted_value_2 = $posted_value; 

                성형 값
                $posted_nameClean = stripslashes($posted_name_2); 

                $posted_값_2 = is_array($posted_값_2) ? implode($posted_value_2, ', ') : $posted_value_2; 
                $posted_valueClean = stripslashes($posted_value_2); 

                각 변수에 할당하세요
                if( $posted_nameClean == 'a' ) { 
                    $input_param_a = $posted_valueClean; 
                }
                if( $posted_nameClean == 'b' ) { 
                    $input_param_b = $posted_valueClean; 
                }
                if( $posted_nameClean == 'c' ) { 
                    $input_param_c = $posted_valueClean; 
                }

            }

            수표 처리
            만약 ( $input_param_a !== $input_param_b || $input_param_a !== $input_param_c ) { 
                  $cf 7->skip_mail = 참; 
            }

}

add_action('wpcf7_before_send_mail', 'my_form_chk', 1); 

위 예시에서 입력 형식에는 세 개의 입력 필드, a, b, c가 있으며, 값을 취해 a와 b가 일치하지 않으면 7->건너뛰기$cf_mail 값을 true로 할당합니다.

이로 인해 연락처 양식 7에 대한 이메일 발송은 생략됩니다. 하지만 DB 등록은 중단되지 않습니다.

따라서 일부 연락처 출처 양식 DB를 수정할 예정입니다.

/wp-content/plugins/contact-form-7-to-database-extension CF7DBPlugin.php 467행 근처에 다음과 같은 동작을 추가하세요:

            만약 ($cf 7->skip_mail) { 
                반환; DB에서 저장하지 마세요
            }

간단히 말해, 7->skip_mail $cf true로 할당되면 Contact Form DB의 처리가 완료됩니다.

이로 인해 데이터베이스에 삽입이 중단되지만, 브라우저에서 확인하면 등록된 것처럼 메시지가 출력됩니다.

따라서 연락 출처 양식 7 중 일부를 수정할 예정입니다.

/wp-content/plugins/contact-form-7/includes classes.php 467행 주변의 처리 방식을 다음과 같이 변경하세요:

만약 ($this->skip_mail )
진짜로 반환; 
        만약 ( $this->skip_mail ) { 
            return false; 
        }

이는 7->skip_mail $cf 원래 이메일 전송을 억제하는 플래그였기 때문인데, true일 때는 true로 반환되어 브라우저에서 보면 성공한 것처럼 보이기 때문입니다.

따라서 7->skip_mail가 true일 $cf때 false를 반환하면 오류가 발생합니다.

참고로, 처음부터 이메일을 보내고 싶지 않다면 다음을 사용할 수 있습니다.

만약 ($this->skip_mail )
진짜로 반환; 
        만약 ( $this->skip_mail ) { 
            return false; 
        } 그렇지 않으면 { 
            진짜로 반환; 
        }

true를 else로 반환하고, 검사 과정에서 잡히지 않으면 DB 등록 후 성공 메시지가 표시됩니다.

Related Articles