あんまり使わないけれど、特定のケースでは必須のカスタマイズ例。
完了ページだけ共用する
フォーム自体はシングルなり固定ページに置いておき、完了ページだけ別ページにしたい時。
function my_mwform_after_send( $Data ){
if( $Data->get_form_key() === 'mw-wp-form-XXX' ){
wp_redirect( '/contact-result' );
exit;
}
}
add_action( 'mwform_after_send_mw-wp-form-XXX', 'my_mwform_after_send' );
MW WP Formを使っているサイトのメンテを引き継いだのですが、
「このページには直接アクセスできません。」のエラー。
調べてみると、URL設定で、「完了画面URL」だけ指定してあり、あとは空欄にしてありました。
感覚的にはこれで意図通り動いてほしいところですが実際はNG。
上記処理を記述したうえで、
- 全部空欄
- 入力URLを空欄、その他を指定
等にします。(完了画面URLは無視)
完了ページには、フォーム設置のショートコードは必要ないので、適当に「お問い合わせありがとうございます。」かなにかを書いておきます。
フォーム設置のショートコードがある状態で直接完了ページを開くと変な感じになります。
ページ遷移しないで投稿タイトルを引き継ぐ
こちらも、フォーム自体はシングルなり固定ページに置いておく場合。
遷移元の投稿タイトルを引き継ぐ例はたくさん例がありますが、遷移なしで引き継ぐ例はあまり見ませんね。
function my_mwform_value( $value, $name ){
if( $name === 'item_id' ){
$name_value = get_the_title();
return $name_value;
}
return $value;
}
add_filter( 'mwform_value_mw-wp-form-XXX', 'my_mwform_value', 10, 2 );
「mwform_text name=”item_id”」の項目に、投稿タイトルを使うよ、という内容です。
「URL引数を有効にする」にチェックが入っていても動作しますが、
「mwform_text name=”item_id” value=”{post_title}”」のように、遷移用の処理が残っていると空欄になりますので注意。
カスタムフィールド値を代入
「value=”{post_title}”」で投稿タイトルを取得出来る状態ならば、
「value=”{カスタムフィールドキー}”」でカスタムフィールドの値が取得できます。
テキスト、テキストエリアなど、無加工の出力で構わない場合はこれで済むと思います。
※ページ遷移しない、値を加工して出力する、などの場合は、上の「ページ遷移しないで投稿タイトルを引き継ぐ」に倣って細工が必要と思います。