Contact form 7で複数フォームを使用している時に、送信時にどのフォームから送信されたのかをフォームIDで判別できます。
以前は、ショートコードのid=”00000″という部分がそれに対応していて、フォームのpost IDが使われていました。
ですが、Contact form 7はバージョンアップして、現在ではショートコードのid=”00000″は投稿 IDベースのフォームIDではなくなりました。
フォームの一覧で表示される以下のようなショートコードのid=”0000″の部分は投稿 IDではなく別の識別番号になります。
ハッシュベースのお問い合わせフォーム識別
お問い合わせフォームを埋め込むために使用されるブロックとショートコードの移植性を向上させるために、Contact Form 7 5.8 では SHA-1 ハッシュに基づく新しいフォーム識別メカニズムが導入されています。以前使用されていた投稿 ID ベースの識別は引き続き機能するため、古いブロックとショートコードを置き換える必要はありません。
https://contactform7.com/2023/08/06/contact-form-7-58
ショートコードのidではフォームのID判別ができない
Contact form 7のカスタマイズで、特定のフォームにだけ適用する場合に、フォームIDで判定してから適用する実装があります。
その時に、ショートコードに含まれる id=”0000″を使っても、投稿 IDベースのフォームIDと一致しないので、上手く動きません。
現在のフォームIDを取得する$WPCF7_ContactForm->id()
というメソッドがあります。
そこで返ってくるIDは投稿IDになります。
if( $WPCF7_ContactForm->id() == 12345 ){
:
}
ショートコードのid=”00000″のidとは異なるので、カスタマイズする場合は、フォーム毎の投稿IDを知る必要があります。
Contact form 7 フォームの投稿IDの調べ方
Contact form 7のフォームを埋め込んだページのソースコードを確認するとすぐにわかります。
id=”wpcf7-f72938-p10215-o1″という部分に投稿IDが含まれています。
fの後に続く数値が投稿IDです。
この場合は、72938になります。
if( $WPCF7_ContactForm->id() == 72938){
:
}
まとめ
Contact form 7のショートコードのIDが投稿IDだった時代にカスタマイズしたものはそのまま使えます。
ですが、新規にカスタマイズを行う際にショートコードのidが投稿IDではないことに気が付いていないと、なぜか動かなくてハマると思います。
もし、フォームの投稿IDが必要なときにはこの記事の内容を参考にしてください。