it-swarm.com.ru

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

У меня есть плагин, который я пишу, что я хочу взаимодействовать с контактной формой 7 ... В своем плагине я добавил следующее действие add_action

add_action("wpcf7_before_send_mail", "wpcf7_do_something_else");

function wpcf7_do_something_else(&$wpcf7_data) {

    // Here is the variable where the data are stored!
    var_dump($wpcf7_data);

    // If you want to skip mailing the data, you can do it...
    $wpcf7_data->skip_mail = true;

}

Я отправил контактную форму, но add_action у меня ничего не получалось .. Я не уверен, как заставить мой плагин перехватить или сделать что-то, когда контактная форма 7 Любой, помогите, как это сделать?

11
Naterade

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

/*
    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, которую ваш код использовал для работы до тех пор, пока пару месяцев назад они не выполнили некоторый рефакторинг кода.

19
Musk

Я хотел бы добавить, что вы можете просто использовать фильтр 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 );
9
d79

Вы можете включить демонстрационный режим в дополнительных настройках, и это предотвратит отправку писем. Смотрите ниже документы CF7.

Если вы задали demo_mode: on в поле Дополнительные настройки, контакт Форма будет в демонстрационном режиме. В этом режиме контактная форма будет пропустить процесс отправки почты и просто отобразить «завершено успешно »как ответное сообщение.

1
Dan Canetti