web-dev-qa-db-ja.com

テキストフィールドの内容に応じた忍者フォームのリダイレクト

私はフロントエンドの投稿をするためにNinja Formsとその拡張を使っています。フォームの値に応じて特定のページにリダイレクトできるようにするための機能があります。

私の目的は、ユーザーがテキストを書き、その後フォームの特定のフィールドに書いたテストに従って、カスタマイズされたURLにリダイレクトされるフォームを用意することです。それで、 "URL"/[与えられたフィールドに書かれたテキスト]のようなものを試してみましたが、うまくいきません。誰かが私を助けてくれるだろうか?

前もって感謝します

function change_ninja_forms_landing_page(){
global $ninja_forms_processing; 

$form_id = $ninja_forms_processing->get_form_ID(); 

if( $form_id == 1 ){ 
    $destinationurlslug = $ninja_forms_processing->get_field_value( 1 ); 
    $url = "http://www.blablabla.com";
    $newdestinationurl = $url/$destinationurlslug ;

    // $url now contains our new redirection page. Let's update the form setting.
    $ninja_forms_processing->update_form_setting( 'landing_page', $newdestinationurl ); } } ?>
1
ctz92

この機能を適切なアクションにフックしたかどうかはわかりません。また、文字列を正しく連結していません。

$newdestinationurl = $url/$destinationurlslug ;の代わりにそれは$newdestinationurl = $url."/".$destinationurlslug ;であるべきです

完全なコードについては下記をご覧ください。



function ninja_forms_handler() {
  add_action ( 'ninja_forms_post_process', 'change_ninja_forms_landing_page', 1, 2 );
}
add_action('init', 'ninja_forms_handler');

function change_ninja_forms_landing_page(){
    global $ninja_forms_processing; 

    $form_id = $ninja_forms_processing->get_form_ID(); 

        if( $form_id == 1 ){ 
        $destinationurlslug = $ninja_forms_processing->get_field_value( 1 );         
        $url = "http://www.blablabla.com";
        $newdestinationurl = $url."/".$destinationurlslug ;        
        /* $url now contains our new redirection page. Let's update the form setting. */
        $ninja_forms_processing->update_form_setting( 'landing_page', $newdestinationurl ); 
    }     
}

この方法を使用する場合は、実際のリダイレクト通知が作成されていないか、優先されることを確認してください。 フォームの[Eメールとアクション]タブから[成功メッセージ]を無効にするだけです。

2
Prasad Nevase