WordPress 연락처 양식 7 텍스트 값 변경
WordPress - 연락처 양식
누군가 cf7 필드 값을 입력했을 때 수정할 필터를 찾고 있습니다.
사용자가 텍스트 필드에 입력하고 데이터를 제출할 때,
- validate - 이미 완료했습니다.
- 유효하지 않은 항목일 경우 감사 페이지로 이동하면 안 됩니다.
- 텍스트 필드를 새 데이터로 바꾸기 - 완료되지 않음
에그: 1
add_filter( 'wpcf7_validate_text*', 'your_validation_filter_func_tel', 100, 2 );
function your_validation_filter_func_tel( $result, $tag ) {
$Yourvalue = $_POST['your-number'];
if ( strlen( $Yourvalue ) == 2 ) {
$result->invalidate( 'your-number', "Please enter a valid number. " . );
// HERE I WANT TO REPLACE NEW DATA TO TEXT FIELD
$result->data( 'your-number', '1002' );
} else if ( strlen( $Yourvalue ) == 3 ) {
$result->invalidate( 'your-number', "Please enter a valid name." . );
// HERE I WANT TO REPLACE NEW DATA TO TEXT FIELD
$result->data( 'your-number', '1003' );
}
return $result;
}
에그: 2
또 하나의 효과적인 예
제외하고는 모든 것이 작동합니다.$result['tel'] = $tel_cleaned_final;
<?php
function custom_filter_wpcf7_is_tel( $result, $tel )
{
// Initialization and Clean Input
$tel_cleaned = strtr( $tel, array(' '=>'', '-'=>'', '.'=>''));
$tel_cleaned_trimmed = ltrim(strtr( $tel_cleaned, array('+'=>'')), '0');
/* Test Conditions.
I concluded 3 if conditions to 1 below bcaz the validation is working perfect
*/
if ('test conditions here')
$tel_cleaned_final = substr($tel_cleaned_trimmed, 2);
else
$tel_cleaned_final = $tel_cleaned_trimmed;
if (strlen($tel_cleaned_final) == 10)
{
$result = true;
//$result['tel'] = $tel_cleaned_final;
/*
Here i want to return new number to text box
for eg: +91 98989-89898 returns 9898989898
*/
}
else
{
$result = false;
}
return $result;
}
add_filter( 'wpcf7_is_tel', 'custom_filter_wpcf7_is_tel', 10, 2 );
?>
유효성 검사 필터만으로 수행하려는 작업을 수행할 수 없습니다.수행된 유효성 검사에 따라 참 또는 거짓을 출력하기 때문입니다.원하는 작업을 수행하려면 필터링할 값을 가진 다른 필터('wpcf7_posted_data')를 사용해야 합니다.그래서 우리는 우리의 프로세스를 두 단계로 나눌 수 있습니다.
1단계: 모든 검증을 현재와 같이 수행합니다.
예제 2를 사용합니다.
function custom_filter_wpcf7_is_tel( $result, $tel )
{
// Initialization and Clean Input
$tel_cleaned = strtr( $tel, array(' '=>'', '-'=>'', '.'=>''));
$tel_cleaned_trimmed = ltrim(strtr( $tel_cleaned, array('+'=>'')), '0');
/* Test Conditions.
I concluded 3 if conditions to 1 below bcaz the validation is working perfect
*/
if ('test conditions here')
$tel_cleaned_final = substr($tel_cleaned_trimmed, 2);
else
$tel_cleaned_final = $tel_cleaned_trimmed;
if (strlen($tel_cleaned_final) == 10)
{
$result = true;
} else
{
$result = false;
}
return $result;
}
add_filter( 'wpcf7_is_tel', 'custom_filter_wpcf7_is_tel', 10, 2 );
위 코드를 통해 포인트 1과 포인트 2가 제대로 작동하는지 확인할 수 있습니다.
- 입증하다.
- 입력이 올바르지 않으면 제출을 중지합니다.
2단계: 테스트를 다시 실행하여 원하는 값을 얻고 업데이트합니다.
function sr_change_updated_field_value( $posted_data )
{
// Initialization and Clean Input
$tel_cleaned = strtr( $tel, array(' '=>'', '-'=>'', '.'=>''));
$tel_cleaned_trimmed = ltrim(strtr( $tel_cleaned, array('+'=>'')), '0');
/* Test Conditions.
I concluded 3 if conditions to 1 below bcaz the validation is working perfect
*/
if ('test conditions here')
$tel_cleaned_final = substr($tel_cleaned_trimmed, 2);
else
$tel_cleaned_final = $tel_cleaned_trimmed;
// Use the name of your field in place of "tel"
$posted_data['tel'] = $tel_cleaned_final;
return $posted_data;
};
add_filter( 'wpcf7_posted_data', 'sr_change_updated_field_value', 10, 1 );
추신: 이렇게 하면 이메일로 전송된 값이나 저장된 경우 제출된 값이 업데이트됩니다.유효성 확인 메시지가 표시되지만, 이 시나리오에서는 php로 할 수 없기 때문에 텍스트 필드에 업데이트된 값이 표시되지 않습니다.
추신 2 이것은 모두 테스트된 코드입니다.해피코딩.
이를 통해 도움이 될 수 있습니다.
add_action( 'wpcf7_before_send_mail', 'some_function_name', 1 );
function some_function_name( $contact_form ) {
$wpcf7 = WPCF7_ContactForm::get_current();
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$data = array();
$data['posted_data'] = $submission->get_posted_data();
$firstName = $data['posted_data']['first-name']; // just enter the field name here
$mail = $wpcf7->prop('mail');
if($firstName =''){
$mail['body'] = str_replace('[first-name]', $firstName . '-blah blah', $mail['body']);
}
$wpcf7->set_properties(array(
"mail" => $mail
));
return $wpcf7;
}
}
도움이 되길 바랍니다!
추신: 테스트가 안 된 제품입니다, 혹시 작동되는지 알려주세요:)
언급URL : https://stackoverflow.com/questions/53429325/wordpress-contact-form-7-text-value-change
'programing' 카테고리의 다른 글
파워셸에 연관 배열이 있습니까? (0) | 2023.11.01 |
---|---|
console.log가 개체의 현재 상태를 표시하도록 하려면 어떻게 해야 합니까? (0) | 2023.11.01 |
jquery를 사용하여 텍스트 상자를 비활성화하시겠습니까? (0) | 2023.11.01 |
Mysql2:: 오류:소켓 '/tmp/mysql'을(를) 통해 로컬 MySQL 서버에 연결할 수 없습니다.양말' (0) | 2023.11.01 |
FLT_MIN이 0인 이유는 무엇입니까? (0) | 2023.11.01 |