tarouken.com

Snow Monkey Formsで、フォームへの移動元ページのタイトルをフィールドに自動反映する。

email, mailing, contact

ページ内目次

Snow Monkey Formsが便利でよく使っているのですが、テキスト用フィールドへ動的に初期値を設定できないかという課題があり、対応しました。

私の場合は以下のようなサイト案件でした。

  • たくさんの施設を紹介するサイト
  • 施設ごとに詳細ページがあり、各ページには必ずお問い合わせボタンがある。
  • お問い合わせボタンを押すと、SnowMonkeyFormsのページに飛ぶ。
  • 飛んだ先で、用意しておいた「問い合わせたい施設名」欄に、元ページの施設名(ページタイトル)が自動反映されるようにしたい。

ちなみに、ChatGPTのおかげで解決しています。Chat GPTまじすごい。

対応の概要

主に以下2つのステップがあります。

・functions.phpへのコード追加

・お問い合わせボタンの編集(私の上記の案件では、施設詳細ページのボタン)

①functions.phpへのコード追加

functions.phpに以下コードを追記します。

(子テーマを使っている場合は子テーマのfunctions.phpへ)

add_filter(
	'snow_monkey_forms/control/attributes',
	function( $attributes ) {
		// name 属性値を持つブロックが対象
		// name が fullname という名前のとき
		if ( isset( $attributes['name'] ) && 'fullname' === $attributes['name'] ) {
			// ?post_id という URL クエリがあるときが対象
			$post_id = filter_input( INPUT_GET, 'post_id' );
			if ( ! is_null( $post_id ) ) {
				// ?post_id で指定された投稿のタイトルを初期値をして設定
				$attributes['value'] = get_the_title( $post_id );
			}
		}
		return $attributes;
	}
);

fullnameというのは、SnowMonkeyFormsの設定画面でいう、赤枠のところです。

snow monkey forms1

ここの「NAME属性」の「fullname」という名称が異なる場合は、上記の黄色のコードに反映させてください。

<参考ページ>
Snow Monkey Forms v1.2.0 をリリースしました



②お問い合わせボタンの編集(クエリパラメーター追加)

ここからはChatGPTに聞いて実装した内容です。(本当ありがたい)


①のコードでは、post_idというURLクエリを受け取ってその投稿ページのタイトルを表示するとなっており、ここ②では、post_idを渡せるように準備する、という内容になります。

まずは、実際に使ったコードの抜粋です。

     <div>
        <?php
            $post_id = get_the_ID();
            $url = add_query_arg( 'post_id', $post_id, '/contact/' );
            echo '<a href="' . esc_url( $url ) . '">';
        ?>
            <p>お問い合わせする</p>
        </a>
    </div>

このコードで出力されるHTMLコードのイメージが以下です。

 イメージ)<a href=”/contact/?post_id=1111″><p>お問い合わせする</p></a>

https://…com/contact/というページへのリンクに、URLクエリ「post_id=1111」が付与されています。


これで「fullname」のフィールドの初期値として反映されるようになります。

Share
わがい

わがい

プログラミング(Web制作)・ライティングに携わっています。 いくつかの会社で勤めて、2020年にフリーランスになりました。 苦手なことを避けつつ、好きなことで働けるような環境作りをめざしてコツコツやってます。 HTML/CSS/JSのほか、WordPress制作、特にElementorやSnow Monkeyといったローコードを用いた短納期での制作が得意です。 また生活・健康の水準を高めるため、米国株投資や筋トレもやってます。

最近の記事

ページ内目次