Пользовательская форма, шорт -код и отправьте обработчик

wordpress.stackexchange https://wordpress.stackexchange.com/questions/15790

  •  16-10-2019
  •  | 
  •  

Вопрос

У меня есть форма фронта с кучей ввода. Мои требования заставляют меня использовать пользовательский шорт -код для создания формы. Я уже проверил страницу с этим шорткодом.

Вот мой:

<form name="myform" method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" enctype="multipart/form-data">

Исходя из этого, он должен открыть ту же страницу (и это так). Однако, когда я нажимаю отправку, я получил 404 на тот же URL. Есть какое -либо решение?

Обновление № 1

Я пробую другой маршрут, используя add_action ('init'):

add_action('init', 'mbro1_intercept_form_input');
function mbro1_intercept_form_input()
{
    if( !(isset($_POST['action_code']) && $_POST['action_code'] == 'mbro_intercept_form_input') )
        return "";
    if( isset( $_POST['submit'] ) )
    {
        //do my code here
        wp_redirect( get_permalink(35) );//page that has [shortcode]
    }
}

Это успешно выполняет мое предполагаемое действие при отправке. Но! После перенаправления все еще 404. Я не знаю, что не так.

Это было полезно?

Решение 3

я беру die() как решение. Хотя я не предпочитаю это.

$redirect_link =  get_permalink(35) ; //page that has form
$script_redirect = "<div>Your form is submitted. Please wait a moment. If your browser didn't redirect, click <a href='$redirect_link'>here</a>.</div>
<script type='text/javasript' language='javascript'> 
    window.location = '$redirect_link';
</script> ";
die( $script_redirect );

Другие советы

Есть ли в вашей форме ввод с именем «Имя»? Например:

<input type="text" name="name">

Если это так, это вызовет неприятности. Измените значение имени.

Также см: Форма «Имя» разрывается и переходит на страницу 404.

Я предполагаю, что линия ближе к концу

wp_redirect( get_permalink(35) );//page that has form

это то, что терпит неудачу. Я бы изменил это на это

$redirect_link =  get_permalink(35) ; //page that has form
wp_redirect( $redirect_link );  // trigger redirect
exit;

Это должно заставить его работать должным образом

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top