[WordPress]Contact Form 7 ショートコード属性から値を受け取る

  • 公開日:2022/7/4
この記事は最終更新日から1年以上が経過しています。

WordPressサイトでページAとページBに同じフォームを設置し、どちらのページのフォームから問合せがあったかを分かるようにします。

試した環境

WordPress v5.9 Contact Form 7 v5.5.5

hidden項目をつくる

フォーム側に値を受け取るhidden項目を追加します。
項目名をreferrer_pageとし、ショートコードから属性を受け取るためにdefault:shortcode_attrを追加しておきます。

[hidden referrer_page default:shortcode_attr]

ショートコードに属性を追加する

フォームのショートコードを設置するページ側で渡したい値を属性にセットします。
属性の名前は、先ほどつくったhidden項目と同じにします。

[contact-form-7 id="123" title="お問い合わせフォーム" referrer_page="ページA"]

属性を定義する

functions.phpでこの属性を定義します。

add_filter( 'shortcode_atts_wpcf7', 'custom_shortcode_atts_wpcf7_filter', 10, 3 );

function custom_shortcode_atts_wpcf7_filter( $out, $pairs, $atts ) {
    $my_attr = 'referrer_page';
 
    if ( isset( $atts[$my_attr] ) ) {
        $out[$my_attr] = $atts[$my_attr];
    }
 
    return $out;
}

これでhidden項目に値がセットされたことが確認できるようになりました。

参考サイト