반응형
CF7 폼 값을 동적으로 변경하다
Contact Form 7 Dynamic Text Extension을 사용하지 않고 CF7 폼필드를 동적으로 변경하려고 했습니다.기존 값을 덮어쓰는 방법이 아니라 게시된 데이터를 얻는 방법에 대한 기사를 많이 봐왔습니다.제 목표는 첨부 파일을 동적으로 변경하고 각 게시물에 관련된 다른 메타데이터를 추가하는 것입니다.할 수 있을까?감사해요!
지금까지의 내용은 다음과 같습니다.
function wpcf7_custom_before_send(&$cf7) {
if ( $cf7->id == 4 ) {
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
$data =& $submission->get_posted_data();
// how do I overwrite posted data?
}
}
}
add_action("wpcf7_before_send_mail", "wpcf7_custom_before_send");
내 코드를 이용해서 할 수 있어코드 설명:
1) 아이디 이후$cf7->id
속성에 더 이상 액세스할 수 없습니다.대신 id() 메서드를 사용합니다.$cf7->id()
.
2) 불필요&
콜백용$cf7
그리고.$submission
. 여기에 사용return
.
add_action("wpcf7_before_send_mail", "wpcf7_do_something");
function wpcf7_do_something($WPCF7_ContactForm)
{
if (224 == $WPCF7_ContactForm->id()) {
//Get current form
$wpcf7 = WPCF7_ContactForm::get_current();
// get current SUBMISSION instance
$submission = WPCF7_Submission::get_instance();
// Ok go forward
if ($submission) {
// get submission data
$data = $submission->get_posted_data();
// nothing's here... do nothing...
if (empty($data))
return;
// extract posted data for example to get name and change it
$name = isset($data['your-name']) ? $data['your-name'] : "";
// do some replacements in the cf7 email body
$mail = $wpcf7->prop('mail');
// Find/replace the "[your-name]" tag as defined in your CF7 email body
// and add changes name
$mail['body'] = str_replace('[your-name]', $name . '-tester', $mail['body']);
// Save the email body
$wpcf7->set_properties(array(
"mail" => $mail
));
// return current cf7 instance
return $wpcf7;
}
}
}
이상, 몇개의 태그가 변경되어 태그가 변경된 메일을 보냅니다;-)
ACF 필드를 기반으로 폼 리시버를 수정해야 했기 때문에 @Brotheryura 코드를 기반으로 한 복사앤페이스트 솔루션을 소개합니다.
프론트 엔드에 숨김 필드를 두지 않고 전자 메일 수신자를 동적으로 수정할 수 있습니다.Simpy가 템플릿 기능에 넣었습니다.php 및 치환$recipient = ...
새로운 수신기를 입수하려면 , 자신의 기능이나 코드를 사용합니다.
add_action("wpcf7_before_send_mail", "wpcf7_change_recipient");
function wpcf7_change_recipient($WPCF7_ContactForm)
{
$wpcf7 = WPCF7_ContactForm::get_current();
$submission = WPCF7_Submission::get_instance();
//some little magic to get the referers ID
$recipient = get_field('mail', url_to_postid(wp_get_referer()));
if (!empty($recipient))
{
if ($submission)
{
$data = $submission->get_posted_data();
// nothing's here... do nothing...
if (empty($data))
return;
// do some replacements in the cf7 email body
$mail = $wpcf7->prop('mail');
$mail['recipient'] = $recipient;
// Save the email body
$wpcf7->set_properties(array(
"mail" => $mail
));
// return current cf7 instance
return $wpcf7;
}
}
}
언급URL : https://stackoverflow.com/questions/25817442/change-cf7-form-values-dynamically
반응형
'programing' 카테고리의 다른 글
리액트 후크 useEffect는 업데이트 시에만 적용됩니까? (0) | 2023.03.27 |
---|---|
문자열을 반환하는 Spring MVC @ResponseBody 메서드에서 HTTP 400 오류가 발생하여 응답하는 방법 (0) | 2023.03.27 |
React Js에서 CSS/Jquery calc 함수 사용 (0) | 2023.03.27 |
Sonar 탐지 보고서에서 롬복 클래스 제외 (0) | 2023.03.27 |
Spring Boot에서는 org.hibernate는 처리되지 않습니다.예외.제약 위반예외. (0) | 2023.03.27 |