私はたくさんの入力を持つフロントエンドフォームを持っています。私の要求はフォームを作成するためにカスタムショートコードを使うことを私に強制します。私はすでにそのショートコードでページをテストしました。
これが私のものです:
<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を持っています。私は何が悪いのかわかりません。
私は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 );
あなたのフォームは "name"という名前の入力を持っていますか?例えば:
<input type="text" name="name">
もしそうなら、それはトラブルを引き起こすでしょう。名前の値を変更してください。
終わりに近い線だと思います
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;
それはそれが正しく機能するように機能させるはずです。