MW WP Formでフォームごとにスラッグを設定して表示させる方法

受託開発をする際の進め方として一般的なのが、ローカル環境で開発をして、データをテスト(もしくは本番)環境にアップロードするという流れがあると思います。

僕も例に漏れず、ローカル開発環境(WordPressの場合は、Local by Flywheel)で開発を進めて、どこかのタイミングでアップロードするのですが、MW WP FormなどのフォームID番号がローカルと本番とで変わってしまう状況がとても面倒に感じていました。

こんなことに困っていました

例えば、ローカル開発環境内でMW WP Formを使ってお問い合わせフォームを作ったとします。その際に、ショートコードが発行されるのですが、そこに番号が書いてあると思います。

お問い合わせフォームと言えど、固定ページにペタっと貼るだけの場合は少なく、page-slug.phpといった具合にファイルを作ってカスタマイズすることもしばしばです。

その際に、PHP側で出力した方が楽な時が多いので、よくecho do_shortcode();でショートコードを書き出してしまいますが、ローカルで作ったフォームと本番環境で別に作ったフォームとでは、番号が一致させるのが結構面倒で、いつも違う番号になってしまっていました。

これに関する対応方法がわからず、毎回2つ(ローカルのフォームと本番のフォーム)のショートコードを書いてコメントアウトしてアップしたりしていたのですが、かなり非効率…。みんなどうしているんだろうと思って、こんなことをツイートしていました。

そしたら、開発者の北島さんがレスポンスしてくださって、

との情報をいただいて、早速試してみました!(マニュアルちゃんと読め!って怒らないで…

MW WP Formでフォームにスラッグを設定してPHPからechoでフォームを表示させる方法

まずは、フォームを作ります。キャプチャはテストなので簡単に入力部分を表示させているだけです。

そして、そのフォームの編集画面で、右上の【表示オプション】をクリックすると、このような色々とチェックできる画面になるので、その中の【スラッグ】にチェックを入れます。

すると、フォーム作成エリアの下に、スラッグを設定できる部分が表示されているはずです。デフォルトではフォーム名になっているはず。

デフォルトの名称からcontactに変更してみました。

あとは、PHPファイルから出力するだけです。任意のPHPファイルの任意の場所から、

<?php echo do_shortcode( '[[mwform_formkey slug="contact"]]' ); ?>

これで、設定したフォームがごっそり表示されると思います。

上記コードは、MW WP Formのスラッグをcontactとした場合のソース例になります。皆さんの環境に合わせて適宜読み替えてください。

まとめ

これでフォームのID番号がローカルと本番で違っていてもスラッグで紐づけることができるのでとても楽ですね!

北島さん、ありがとうございましたー!!

WordPress 6.5.x 対応版を出版しました

WordPress デフォルトテーマ Twenty Twenty-Four を使って、シンプルなブログやポートフォリオサイト、そしてコーポレートサイトを作りながら、ブロックテーマやサイトエディターの基本を理解することができます。