CF7フォームフィールドを動的に変更しようとしていますContact Form 7 Dynamic Text Extensionを使用せずに。既存の値を上書きする方法だけでなく、投稿されたデータを取得する方法についての記事をたくさん見てきました。私の目標は、添付ファイルを動的に変更し、各投稿に関連付けられた他のメタデータを追加することです。これはできますか?ありがとうございました!
これが私がこれまでに持っているものです:
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)id _$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;
}
}
}
_
これで、いくつかのタグが変更され、変更されたタグが付いたメールが送信されます;-)