Статьи

Как подключиться к Contact Form 7 перед отправкой формы

Я должен был сделать это, чтобы предотвратить отправку электронной почты. Надеюсь, поможет.

add_action("wpcf7_before_send_mail", "wpcf7_do_something_else");  
function wpcf7_do_something_else($cf7) {
    
    $wpcf = WPCF7_ContactForm::get_current();

    

    if () {
        
        $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( ) $skip_mail = true;

    return $skip_mail;

}, 10, 2 );

Начиная с WPCF7 5.2 wpcf7_before_send_mailловушка сильно изменилась. Для справки, вот как работать с этим хуком в 5.2+

Пропустить почту

function my_skip_mail() {
    return true; 
}
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();

    

    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');

    

    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'; 

    $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 );

Полезные статьи по теме:

Автозаполнение или предложение из заголовков сообщений внутри плагина

newbedev.com

Кнопка «Наверх»