MW WP Form たまに使うカスタマイズ

ワードプレス関数ファイルPHPMW WP Formプラグインメールフォーム

あんまり使わないけれど、特定のケースでは必須のカスタマイズ例。

完了ページだけ共用する

フォーム自体はシングルなり固定ページに置いておき、完了ページだけ別ページにしたい時。

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は無視)

 

完了ページには、フォーム設置のショートコードは必要ないので、適当に「お問い合わせありがとうございます。」かなにかを書いておきます。

フォーム設置のショートコードがある状態で直接完了ページを開くと変な感じになります。

ページ遷移しないで投稿タイトルを引き継ぐ

こちらも、フォーム自体はシングルなり固定ページに置いておく場合。

 

遷移元の投稿タイトルを引き継ぐ例はたくさん例がありますが、遷移なしで引き継ぐ例はあまり見ませんね。

URLにパラメータをつけずにMW WP Formを埋め込んだページのタイトルを取得する

 

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=”{カスタムフィールドキー}”」でカスタムフィールドの値が取得できます。

テキスト、テキストエリアなど、無加工の出力で構わない場合はこれで済むと思います。

※ページ遷移しない、値を加工して出力する、などの場合は、上の「ページ遷移しないで投稿タイトルを引き継ぐ」に倣って細工が必要と思います。