Перенаправление контактной формы 7 с on_sent_ok не работает?

Я попытался использовать on_sent_ok для перенаправления после отправки формы для контактной формы 7 (плагин Wordpress), но по какой-то причине это не работает:

on_sent_ok: "location.replace('http://www.company.com/thank-you/');"

Почему это не сработает?

Я использую CF7 версии 2.2.1 и Wordpress 3.5.0.


person Danijel    schedule 29.07.2013    source источник
comment
Обратите внимание, что теперь (2018 г.) on_sent_ok устарел   -  person Marco Panichi    schedule 19.12.2018


Ответы (8)


on_sent_ok не работает в контактной форме 7, как правило, указывает на конфликт Javascript либо с вашей текущей темой WordPress, либо с одним из других используемых вами плагинов — см. Контактная форма 7 по проблемам с электронной почтой — там есть ссылка, посвященная конфликтам JavaScript.

Помните, что проблема в одном скрипте может вызвать проблемы в другом. Например, некоторые ошибки jQuery могут остановить обработку других скриптов jQuery, что может затруднить поиск виновника.

Ошибка jQuery в одном из ваших плагинов или файлах javascript вашей темы может остановить обработку jQuery до того, как она попадет в скрипт CF7.

Используйте ссылку Firebug или Инструменты разработчика Chrome, чтобы подробно изучить конфликты Javascript.

См. http://wiki.simple-press.com/installation/troubleshooting/plugin-conflicts/ для общего руководства.

person buzztone    schedule 05.01.2014
comment
Спасибо. Как определить конфликт с плагином или темой? Как узнать, конфликт ли это? - person Danijel; 07.01.2014
comment
Работает нормально после обновления контактной формы с версии 2.1 до 3.7 (и обновления Wordpress до 3.8.1). - person Danijel; 18.02.2014

Контактная форма 7 Перенаправление страницы благодарности СТАРЫЙ МЕТОД: хук on_sent_ok больше не рекомендуется. У меня есть код, который вы можете скопировать и вставить. Вы можете добавить этот метод в конец вашего файла functions.php, добавив этот код:

<pre>
<code>
add_action( 'wp_footer', 'mycustom_wp_footer' );

function mycustom_wp_footer() {
?>
<script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
   if ( '97' == event.detail.contactFormId ) { 
    location = 'http://www.vizistata.com/affordable-logo-designs.php';
    } 
    else if ( '634' == event.detail.contactFormId ) { // 634 is the form id
        location = 'http://www.vizistata.com/#blog';
    } 

    else if ( '635' == event.detail.contactFormId ) { // 635 is the form id
        location = 'http://www.vizistata.com/#contact';
    } 

    else if ( '636' == event.detail.contactFormId ) { 
        location = 'http://www.vizistata.com/#services';
    } 

    else if ( '94' == event.detail.contactFormId ) { 
        location = 'http://www.vizistata.com/#about';
    } 


    else { // Sends submissions on all unaccounted for forms to the third thank you page
        location = 'http://www.vizistata.com/';
    }
}, false );
</script>
<?php
}</pre>
</code>
person Sanjeev Thakur    schedule 20.02.2018
comment
это должно отображаться сверху, так как это последнее и рекомендуемое решение. - person Deepak Kamat; 28.05.2019

Была такая же проблема с моей собственной темой Wordpress. Через час я понял, что забыл добавить <?php wp_footer(); ?> в footer.php, поэтому важные скрипты Contact 7 не загружаются. Когда я добавляю его, все работает.

person REZzzz    schedule 27.02.2017

Попробуй это...

on_sent_ok: "location = 'http://example.com/';"

в дополнительных настройках

person SilverNightaFall    schedule 29.07.2013
comment
Та же проблема: кажется, что контактная форма 7 помещает эти невидимые символы после URL-адреса: %E2%80%8E, а затем сообщает мне, что URL-адрес не существует. - person Kokodoko; 14.04.2014

Я пробовал оба решения: on_sent_ok не работал, и добавление перенаправления javascript тоже не помогло. В конце концов, я обнаружил, что редактирую файл «submissions.php» внутри папки «modules» «contact-form-7». ищите: private function submit() там, ищите elseif ( $this->mail() Я прокомментировал $this->response = $contact_form->message( 'mail_sent_ok' ); и просто поставил header("Location: www.somesite.com/"); Работает очень хорошо.

person Ian Schneider    schedule 26.02.2015
comment
Спасибо за это! У меня есть клиент с 21 ошибкой JS в теме, которая не позволяет мне обновить указанную тему, и это было единственное решение, которое заставило перенаправление работать :) - person Keryn Gill; 28.04.2017
comment
@KerynGill - Прошло много времени с тех пор, как я опубликовал это. Я рад, что это помогло. Спасибо за голосование! - person Ian Schneider; 03.05.2017

Контактная форма 7 Перенаправление на другой URL-адрес после отправки

Сначала вам нужно обновить контактную форму 7 в новой версии, я попробую ее на версии 7.4.9, а затем поместите короткий код контактной формы на любую страницу и разместите этот JS-скрипт в любом месте на странице и измените URL-адрес, где необходимо перенаправить вашу страницу после отправки.

<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
location = 'http://example.com/';
}, false );
</script> 

Для получения дополнительной информации нажмите на официальный сайт контактной формы 7 https://contactform7.com/redirecting-to-another-url-after-submissions/

person Ashar Zafar    schedule 24.08.2017

Я столкнулся с той же проблемой в контактной форме 7 последней версии 4.8.1.

наконец-то решена проблема с использованием пользовательского кода jquery.

if ($('.wpcf7-form.sent').length) {
      $(location).attr('href', 'http://www.example.com')
    }

Примечание. Контактная форма 7 успешно отправила форму, добавив класс «отправлено» в поле формы.

person Raja Rama Mohan Thavalam    schedule 09.08.2017

Я использую для этого следующий код. Я поместил его в одну строку, чтобы просто сохранить несколько символов. При необходимости вы все еще можете работать с is_page или чем-то еще, чтобы JavaScript выводился только для страниц, которые также содержат форму.

/* Inline script for redirect cf7 to thank you page */
// https://contactform7.com/redirecting-to-another-url-after-submissions/
add_action('wp_footer', 'cf7__redirect_thankyoupage');
function cf7__redirect_thankyoupage() {
    ?><script>document.addEventListener('wpcf7mailsent',function(event) {location='/thank-you';}, false );</script><?php
}

И если вы используете WPML и хотите вывести его только для одного языка, вы можете использовать следующий код:

if (null !== ICL_LANGUAGE_CODE && ICL_LANGUAGE_CODE == "en"){ ... }

Лучше всего настроить страницы благодарности на Noindex (через Robots.txt/Meta).

person Julian    schedule 12.11.2020