はじめに
フォームのフィールドラベルでスマートタグを処理したいですか?小さなPHPスニペットで簡単に実現できます。 このチュートリアルでは、フォームのフィールドラベルでスマートタグを処理する方法を紹介します。
スマートタグを使用することで、フォーム内に特定のデータを動的に取り込んで表示することができます。
デフォルトでは、スマートタグはフォームのフィールドラベル内に配置されても処理されません。
しかし、この機能は、例えば、ログインしているユーザー名やページのURLを表示したり、カスタムスマートタグを使って他の詳細を表示したい場合に便利です。
このチュートリアルでは、ログインしているユーザーだけが見ることができるフォームを作成します。そのため、段落フォームフィールドのフィールドラベルにファーストネームを使用することで、よりパーソナルなフォームにしたいと思います。
スニペットの追加
スニペットをサイトに追加することから始めましょう。 スニペットをサイトに追加する方法についてサポートが必要な場合は、こちらのチュートリアルをご覧ください。
以下では、特定のフォームIDを対象とする方法と、すべてのフォームに適用する方法の2つを紹介します。使いたいスニペットを選択してください。
特定のフォームIDをターゲットにする
このスニペットでは、フォームID365のみを対象としています。 フォームIDを見つけるのに助けが必要な場合は、こちらのチュートリアルをご覧ください。
/** * Run Smart Tags on all field labels. * * @link https://wpforms.com/developers/how-to-process-smart-tags-in-field-labels/ */ function wpf_dev_textarea_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if ( absint( $form_data[ 'id' ] ) !== 365 ) { return $field; } $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_textarea_field_display', 'wpf_dev_textarea_field_display', 10, 3 );
すべてのWPFormsで使用
以下のコードは、すべてのWPFormsでこれを可能にします。
/** * Run Smart Tags on field labels in WPForms. * * @link https://wpforms.com/developers/how-to-process-smart-tags-in-field-labels/ */ function wpf_dev_textarea_field_display( $field, $field_atts, $form_data ) { $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_textarea_field_display', 'wpf_dev_textarea_field_display', 10, 3 );
フォームの作成
次にフォームを作成し、フィールドを追加します。 最初に追加するフォームフィールドは段落テキストフォームフィールドで、フィールドラベルの中に新しいスマートタグを使ってユーザーのファーストネームを入力します。そこで、このフィールドのラベルをTell us a little about yourself {user_first_name}に変更します。
フォームの作成にヘルプが必要な場合は、こちらのドキュメントをご覧ください。
フォームが読み込まれると、新しいスマートタグから引き出された名前が表示されます。
メール通知にスマートタグを使用する
スマートタグは通知にも使えます。
これを行うには、フォームビルダー内の設定に移動し、通知を選択します。
メール通知メッセージの設定中に、「スマートタグを表示」を選択して、メッセージに含めるスマートタグを選択できます。
他のフォーム・フィールド・ラベルでスマートタグを使用する
以下に、各フォームフィールドのラベルにスマートタグを処理するために必要なスニペットを示します。
上述したように、これらのスニペットは単一のフォームIDに固有のものです。すべてのフォームで利用できるようにしたい場合は、フォームIDを参照しているスニペット内のブロックを削除してください。
/** * Run Smart Tags on field labels in WPForms. * * @link https://wpforms.com/developers/how-to-process-smart-tags-in-field-labels/ */ // Run smart tags on text field label. function wpf_dev_text_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return $field; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_text_field_display', 'wpf_dev_text_field_display', 10, 3 ); // Run smart tags on textarea field label. function wpf_dev_textarea_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_textarea_field_display', 'wpf_dev_textarea_field_display', 10, 3 ); // Run smart tags on checkbox field label. function wpf_dev_checkbox_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_checkbox_field_display', 'wpf_dev_checkbox_field_display', 10, 3 ); // Run smart tags on email field label. function wpf_dev_email_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_email_field_display', 'wpf_dev_email_field_display', 10, 3 ); // Run smart tags on select field label. function wpf_dev_select_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_select_field_display', 'wpf_dev_select_field_display', 10, 3 ); // Run smart tags on radio field label. function wpf_dev_radio_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_radio_field_display', 'wpf_dev_radio_field_display', 10, 3 ); // Run smart tags on number field label. function wpf_dev_number_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_number_field_display', 'wpf_dev_number_field_display', 10, 3 ); // Run smart tags on name field label. function wpf_dev_name_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_name_field_display', 'wpf_dev_name_field_display', 10, 3 ); // Run smart tags on phone field label. function wpf_dev_phone_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_phone_field_display', 'wpf_dev_phone_field_display', 10, 3 ); // Run smart tags on address field label. function wpf_dev_address_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_address_field_display', 'wpf_dev_address_field_display', 10, 3 ); // Run smart tags on URL field label. function wpf_dev_url_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_url_field_display', 'wpf_dev_url_field_display', 10, 3 ); // Run smart tags on password field label. function wpf_dev_password_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_password_field_display', 'wpf_dev_password_field_display', 10, 3 ); // Run smart tags on payment checkbox field label. function wpf_dev_payment_checkbox_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_payment_checkbox_field_display', 'wpf_dev_payment_checkbox_field_display', 10, 3 ); // Run smart tags on payment multiple select field label. function wpf_dev_payment_multiple_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_payment_multiple_field_display', 'wpf_dev_payment_multiple_field_display', 10, 3 ); // Run smart tags on single payment field label. function wpf_dev_payment_single_field_display( $field, $field_atts, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #365. if( $form_data[ 'id' ] != 365 ) return; $field[ 'label' ] = wpforms()->smart_tags->process( $field[ 'label' ], $form_data ); return $field; } add_filter( 'wpforms_payment_single_field_display', 'wpf_dev_payment_single_field_display', 10, 3 );
この機能は、ユーザーの入力データ(例えば、 {field_id="3"}
).
これで完了です! これで、フィールドラベル内でスマートタグを処理できるようになりました。フィールドの説明でスマートタグを処理したいですか? フィールドの説明でスマートタグを処理する方法の記事をご覧ください。