wp_redirect не работает внутри add_action( ‘wpcf7_after_flamingo’)

wp_redirect не работает внутри add_action( ‘wpcf7_after_flamingo’)

20.11.2019 06:16:22 Просмотров 52 Источник

Пожалуйста, смотрите ниже код:

function action_wpcf7_after_flamingo( $result ) {
   if($result['contact_form_id'] == 329){
   /** SOME CALCULATIONS HERE **/ 
    $url = ; //Url to payment Checkout
    wp_redirect($url);
    exit;
    }
}

add_action( 'wpcf7_after_flamingo', 'action_wpcf7_after_flamingo', 10, 1 );

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

Я могу сделать некоторые вычисления на основе значений контактной формы, но wp_redirect() не работает. Пожалуйста, поделитесь, как я могу перенаправить на другой URL внутри любого add_action();

У вопроса есть решение - Посмотреть?

Ответы - wp_redirect не работает внутри add_action( ‘wpcf7_after_flamingo’) / wp_redirect not working inside add_action( ‘wpcf7_after_flamingo’)

MartinRenze

20.11.2019 06:43:06

wp_redirect() не должен работать после запуска вывода страницы. Можно сделать редирект с помощью JavaScript:

window.location.href = "http://www.w3schools.com";
https://stackoverflow.com/questions/58957700/wp-redirect-not-working-inside-add-action-wpcf7-after-flamingo/58958235#comment104175739_58958235
№. Это не сработает. Я нахожусь внутри функции PHP. Функция PHP доступна с помощью Ajax, и я не могу изменить код Ajax.. Ваш подход здесь не сработает. Спасибо за ваше время.
mrwpress

20.11.2019 06:57:58

Согласно этой документации строка 113:

Контактная Форма 7 Модуль Фламинго

Похоже, что это действие запускается внутри функции отправки формы. Это означает, что форма уже отправлена и заголовки уже отправлены. Ключ здесь заголовки уже отправлены. Действие "wpcf7_after_flamingo" приходит хорошо после того, как порядок стрельбы в WordPress для крючков. Для выполнения функции wp_redirect() следует использовать Хук 'template_redirect', как описано в Кодексе:

Кодекс

Так как же ее решить? В соответствии с контактная форма 7 лучше всего сделать, это использовать немного JavaScript для прослушивателя событий:

Контактная Форма 7 Документации

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

Итак, я считаю (* это 100% не проверено), что следующее должно работать:

  1. Добавьте этот фрагмент javascript в нижний колонтитул.php-файл в вашей теме / дочерней теме

  2. Изменить адрес на ваш адрес выбор. Вы даже можете включить параметр, если вы хотите следить за чем-то на странице, на которую вы перенаправляете.

  3. Возьмите wp_redirect() из действия "wpcf7_after_flamingo", в котором он у вас есть

ОТРЕДАКТИРОВАННЫЙ:

приемники событий

document.addEventListener( 'wpcf7submit', function( event ) {
    if ( event.detail.contactFormId == '17' ) {
        console.log(event.detail);
    }
}, false );

Ключ заключается в том, чтобы открыть консоль и узнать все, что упаковано в переменную "событие", переданную в нее. Оттуда должно быть легко сделать URL-адрес

https://stackoverflow.com/questions/58957700/wp-redirect-not-working-inside-add-action-wpcf7-after-flamingo/58958529#comment104175833_58958529
Спасибо за предложение. Я знаю о контактной форме 7 слушателей событий JS. Но я не могу сделать эту работу в JS/jQuery. Я хочу следующий 1-Id последних вставленных данных формы. 2-Создайте URL-адрес проверки, используя Square Up PHP SDK, а затем перенаправьте его на этот URL-адрес проверки, созданный на Шаге 2, упомянутом выше.
https://stackoverflow.com/questions/58957700/wp-redirect-not-working-inside-add-action-wpcf7-after-flamingo/58958529#comment104175862_58958529
Если вы знаете, как вернуть checkout url из 'wpcf7_after_flamingo' в wpcf7mailsent ' eventListener, чем это будет работать хорошо для меня.
https://stackoverflow.com/questions/58957700/wp-redirect-not-working-inside-add-action-wpcf7-after-flamingo/58958529#comment104176134_58958529
@OptimumCreative-я не собираюсь загружать контактные формы 7, потому что я парень с гравитационной формой;) - и мне также нужно загрузить модуль Flamingo. Но, я считаю, что это то, что вы ищете. Отредактированный ответ выше.
https://stackoverflow.com/questions/58957700/wp-redirect-not-working-inside-add-action-wpcf7-after-flamingo/58958529#comment104176301_58958529
Хорошо.. Спасибо, что уделили мне время.. Но поверьте мне, ваш подход не будет работать в моем случае, так как мне нужно сделать некоторые вычисления и создать запрос проверки/Url-адрес на стороне сервера.
https://stackoverflow.com/questions/58957700/wp-redirect-not-working-inside-add-action-wpcf7-after-flamingo/58958529#comment104176493_58958529
Хорошо. Я возьму его у вас, потому что вы тот, кто знает, что находится внутри этой переменной "событие". Я рискну сказать, что в нем есть все, что вам нужно для выполнения ваших вычислений на стороне javascript. Однако, если бы вам пришлось сделать это на стороне сервера, я бы просто открыл соединение AJAX и закончил с ним. Удачи вам!
https://stackoverflow.com/questions/58957700/wp-redirect-not-working-inside-add-action-wpcf7-after-flamingo/58958529#comment104176918_58958529
На самом деле переменная события не имеет идентификатора отправки и значений полей контактной формы. и мне нужно установить последний идентификатор отправки и контактную форму, поданную значения для проверки URL. вот почему я не могу использовать простой подход AJAX.
Закрыть X