【MW WP Form】GETパラメータの有無で表示する項目を制御する方法【WordPress】

こんにちは、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パラメータの有無で表示する項目を制御する方法のご紹介でした!

Adobe Creative Cloudを通常価格で購入していませんか?

Adobe Creative Cloud(Adobe CC)はAdobe社が提供するクリエイター向けのサービスです。WEB制作の幅を広げる「Photoshop・Illustrator・XD」Youtuberや動画クリエイターの編集作業に欠かせない「Premiere Pro・After Effects」など全20以上のアプリが提供されており、幅広いプランが用意されています。

コンプリートプランはAdobe CCの全20以上のアプリが使用できるプランです。多くのアプリが使用できるため定価で購入すると年間7万円以上するプランですが、デジタルハリウッドのAdobeマスター講座では「基礎動画教材+Adobe CC コンプリートプラン(12ヵ月)」がセットになって39,980円(税込)で利用できます。定価より安価にAdobe Creative Cloudのライセンスを購入でき、以降のライセンス更新も可能。動画教材で基礎スキルを習得できるので、入門する方にも便利な講座です。詳しくは下記のリンクからチェックしてみてくださいね。

Adobeマスター講座はこちら

おすすめの書籍