ASPなどでサイトのメールフォームから送信があった際に、成果承認のためにメール送信ごとにユニークな文字列でタグを発行する必要があったりします。
メール送信ごとにユニークな識別子として思いつくのがシリアル番号です。
Contact form 7にはFlamingoと組み合わせることでシリアル番号を振ることができます。
このシリアル番号はメールタグで参照できるようになっていますが、外部から参照できるAPIは用意されていないように見えます。
https://contactform7.com/ja/special-mail-tags
[_serial_number]
— このタグはインクリメントする数値で置き換えられます。つまり、個々の送信のシリアルナンバーとして機能します。Flamingo 1.5以上がインストールされていることが必要です。
contact-form-7-serial-numbersは公開停止で不具合多い
古いプラグインで、日本人作者の『contact-form-7-serial-numbers』というものがあります。
このプラグインはASPの対応を意識した機能としてショートコードでシリアル番号を呼び出すことができるので便利でした。
残念なことに、9年前から更新がなく、Wordpress公式でも公開停止になっています。
Serial Number for Contact Form 7が使える
その代わりのプラグインとして、日本人作者の『Serial Number for Contact Form 7』があります。
今後は、『Serial Number for Contact Form 7』を使うのがおススメです。
しかし、『Serial Number for Contact Form 7』はシリアル番号を出力できるショートコードが用意されていませんでした。
カスタムDOMでシリアル番号を取得できるようですが、サンクスページなどで参照するのには使いにくい感じです。
ソースコードを確認すると、シリアル番号を取得する関数が用意されていたのでショートコードとして呼び出せるようにスニペットを用意しました。
使い方
[get_serial_number form_id="1234"]
シリアル番号を取得するスニペット
namespace _Nt\WpPlg\WPCF7SN;
add_shortcode('get_serial_number',function($atts){
extract($atts = shortcode_atts(array(
'form_id' => ""
), $atts));
if($form_id){
return;
}
ob_start();
//echo "formid:".$form_id;
echo Serial_Number::get_serial_number( $form_id );
return ob_get_clean();
});
テンプレートなどで呼び出す場合は以下のように書く。echoはいらない。
<?php do_shortcode('[get_serial_number form_id="1234"]');?>
まとめ
Contact form 7で送信ごとにシリアル番号を取得して、さらにそのシリアル番号をページ内で呼び出したい時は、Serial Number for Contact Form 7を使って、ショートコードを作成するのがおススメです。