こんにちは、Ryohei(@ityryohei)です!

本記事では、MW WP FormでGETパラメータの有無によって表示する項目を制御する方法をご紹介しています。

MW WP Formにはいくつものフィルターフックが用意されています。その中の一つに「my_mwform_post_content」というものがあります。

my_mwform_post_content」はフォームの内容を設定する際に使用するフィルターフックです。下記のページに開発者様が用意したマニュアルがありますので、ご一読いただければと思います。

[マニュアル]mwform_post_content_mw-wp-form-xxx

今回実現したいこと

例えば下記のようなGETパラメータがついたリクエストがあったとします。よく見かけるGETパラメータかと思います。

https://into-the-program.com/contact-form?id=12345

もし「id」を持ったGETリクエストがあった場合に予め用意しておいた「項目)」を表示する、ということを実現したいと思います。

では、解説していきます。

前提準備

本記事では構築中もしくは稼働中の「MW WP Form」に少し手を加えるといった内容になります。

「MW WP Form」はデフォルトではパラメータを使用することができないようになっています。なのでパラメータが取得できるように予め下記の設定をしておいてください。

  • 「MW WP Form」の設定画面で「引数を有効にする」にチェックを入れておく

「MW WP Form」の設定画面右側にありますので、チェックを入れて保存すれば準備完了です。

フォームを作成する

MW WP Form」の設定画面から簡単なフォームを作成します。作成済みの方はそのフォームをご使用いただき、まだ作成されていない方は「フォーム編集」画面から下記のような簡単なフォームを作成してください。

<table>
    <tr>
        <th>お名前</th>
        <td>[mwform_text name="お名前"]</td>
    </tr>
    <tr>
        <th>メールアドレス</th>
        <td>[mwform_email name="メールアドレス"</td>
    </tr>
    <tr>
        <th>お問い合わせ内容</th>
        <td>[mwform_textarea name="お問い合わせ内容" rows="10"]</td>
    </tr>
</table>

また、併せてGETパラメータを取得した際に項目を表示した箇所にコメントを記載しておきます。本記事では「お問い合わせ種別」という項目を表示したいので、そのようにコメントを追加します。

上記のHTMLにコメントを追加すると下記のようになります。

<table>
    
    <!-- お問い合わせ種別 -->
    
    <tr>
        <th>お名前</th>
        <td>[mwform_text name="お名前"]</td>
    </tr>
    <tr>
        <th>メールアドレス</th>
        <td>[mwform_email name="メールアドレス"</td>
    </tr>
    <tr>
        <th>お問い合わせ内容</th>
        <td>[mwform_textarea name="お問い合わせ内容" rows="10"]</td>
    </tr>
</table>

以上で「フォーム編集」画面での修正は完了です。

GETパラメータを取得した際にフォームの内容を設定する

続いてPHPでfunctions.phpを修正していきます。処理の流れは下記のような順番でいきたいと思います。

  • id」というGETパラメータが取得する
  • フォームのコンテンツを取得する
  • お問い合わせ種別」のコメント部分を表示したい項目に置換する

では、実際に「functions.php」に追記していきます。

functions.php

function my_mwform_post_content( $content, $Data ) {
    if(!empty($_GET['id'])){
        $str = "<tr>
                  <th>お問い合わせ種別</th>
                  <td>[mwform_checkbox name=\"お問い合わせ種別\" children=\"0:選択①, 1:選択②, 2:選択③\" separator=\",\"]</td>
                <tr>";

        $content = str_replace('<!-- お問い合わせ種別 -->', $str, $content);
        
        return $content;
    }
    return $content;
}
add_filter('mwform_post_content_mw-wp-form-xxx', 'my_mwform_post_content', 10, 2);

以上です.

(「mwform_post_content_mw-wp-form-xxx」の「xxx」部分はフォームの識別番号に置換してください。)

本記事では「お問い合わせ種別」という項目を表示するためのサンプルを使用して解説を進めてきましたが、実際に使用される場合はコメント等は変更してご使用ください。

また「$str」の変数内に指定してあるタグが記載していた「お問い合わせ種別」のコメントに代わって表示される項目になります。代入してあるテキスト群を変更することで任意の項目が表示できるようになりますので、色々試していただければと思います。

最後に

いかがでしたでしょうか。

MW WP Form」は拡張性が高く思った通りのフォームを簡単に構築することができる素晴らしいプラグインです。個人・法人問わず多くのエンジニアに愛されている人気のプラグインで、ネットに情報が多く、痒いところに手が届くため、今後も多くの場面で使わせていただければと思います!

以上、MW WP FormでGETパラメータの有無で表示する項目を制御する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。