web-dev-qa-db-ja.com

カスタムフォーム、ショートコード、および送信ハンドラ

私はたくさんの入力を持つフロントエンドフォームを持っています。私の要求はフォームを作成するためにカスタムショートコードを使うことを私に強制します。私はすでにそのショートコードでページをテストしました。

これが私のものです:

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

これに基づいて、それは同じページを開くはずです(そしてそれはしました)。しかし、submitを押すと、同じURLに404が表示されます。解決策はありますか?

アップデート#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を持っています。私は何が悪いのかわかりません。

4
ariefbayu

私は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 );
0
ariefbayu

あなたのフォームは "name"という名前の入力を持っていますか?例えば:

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

もしそうなら、それはトラブルを引き起こすでしょう。名前の値を変更してください。

フォーム 'name'は分割されて404ページに移動します

0
Geert

終わりに近い線だと思います

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;

それはそれが正しく機能するように機能させるはずです。

0
Norcross