Я должен был сделать это, чтобы предотвратить отправку электронной почты. Надеюсь, поможет.
/*
Prevent the email sending step for specific form
*/
add_action("wpcf7_before_send_mail", "wpcf7_do_something_else");
function wpcf7_do_something_else($cf7) {
// get the contact form object
$wpcf = WPCF7_ContactForm::get_current();
// if you wanna check the ID of the Form $wpcf->id
if (/*Perform check here*/) {
// If you want to skip mailing the data, you can do it...
$wpcf->skip_mail = true;
}
return $wpcf;
}
Этот код предполагает, что вы используете последнюю версию CF7. Ваш код, указанный выше, работал до тех пор, пока пару месяцев назад они не провели некоторый рефакторинг кода. [28 апреля 2015 г.]
Я хотел бы добавить, что вы можете просто использовать wpcf7_skip_mail
фильтр:
add_filter( 'wpcf7_skip_mail', 'maybe_skip_mail' );
function maybe_skip_mail( $skip_mail, $contact_form) {
if( /* your condition */) $skip_mail = true;
return $skip_mail;
}, 10, 2 );
Начиная с WPCF7 5.2 wpcf7_before_send_mail
ловушка сильно изменилась. Для справки, вот как работать с этим хуком в 5.2+
Пропустить почту
function my_skip_mail() {
return true; // true skips sending the email
}
add_filter('wpcf7_skip_mail','my_skip_mail');
Или добавьте skip_mail
на вкладку «Дополнительные настройки» в форме в админке.
Получение идентификатора формы или идентификатора сообщения
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission) {
$post_id = $submission->get_meta('container_post_id');
$form_id = $contact_form->id();
// do something
return $contact_form;
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
Получить данные, введенные пользователем
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission) {
$your_name = $submission->get_posted_data('your-field-name');
// do something
return $contact_form;
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
Отправить письмо динамическому получателю
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission) {
$dynamic_email = 'email@email.com'; // get your email address...
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $dynamic_email;
$contact_form->set_properties($properties);
return $contact_form;
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
Автозаполнение или предложение из заголовков сообщений внутри плагина