カスタム・スマートタグの作成方法

フォームの機能性を高めるために、パーソナライズされたスマートタグを作成したいと考えていませんか?メール通知や確認メッセージにダウンロード可能なリンクを埋め込むなど、カスタムスマートタグを組み込むことを想定している場合、カスタムコードスニペットを使えば、そのプロセスは簡単です。このガイドでは、PHPを利用してカスタマイズされたスマートタグを作成する手順を説明します。

スマートタグは、フォームフィールドや通知メールに特定のデータを動的に取り込む便利な手段です。WPFormsには、現在のページのURLやログインしているユーザのメールアドレスなどの情報を抽出することができる、多数の組み込みスマートタグが用意されています。WPFormsにあらかじめ定義されているスマートタグについては、ドキュメントを参照してください

カスタムスマートタグの作成

以下の例では、フォームが完了するとダウンロードリンクのURLが表示されるように設計された、新しいカスタムスマートタグの作成方法を示します。このプロセスには2つのPHP関数が含まれ、それぞれが異なる目的を果たします。

最初の機能は、スマートタグの作成です。基本的な名前の変更だけで、他のスマートタグ用にカスタマイズできるように設計されています。

番目の関数は、コードの大部分が実装される場所である。その if ステートメントで、このスマート・タグに表示させたい値を取得するために必要なコードを追加する必要があります。

スマートタグの名前を必要に応じてカスタマイズしてください。スニペットをサイトに追加する場所や方法がわからない場合は、こちらのチュートリアルをご覧ください

/**
 * Register the Smart Tag so it will be available to select in the form builder.
 *
 * @link   https://wpforms.com/developers/how-to-create-a-custom-smart-tag/
 */
 
function wpf_dev_register_smarttag( $tags ) {
 
    // Key is the tag, item is the tag name.
    $tags[ 'download_link' ] = 'Download Link';
 
    return $tags;
}
add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag', 10, 1 );
 
/**
 * Process the Smart Tag.
 *
 * @link   https://wpforms.com/developers/how-to-create-a-custom-smart-tag/
 */
 
function wpf_dev_process_smarttag( $content, $tag ) {
 
    // Only run if it is our desired tag.
    if ( 'download_link' === $tag ) {
 
                // Replace our link in this demo with the URL you wish to provide
        $link    = 'https://yoursite.com/file.pdf';
 
        // Replace the tag with our link.
        $content = str_replace( '{download_link}', $link, $content );
 
    }
 
    return $content;
}
add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 2 );

注: スマートタグの名前には、小文字のラテン文字、数字、アンダースコアのみを使用できます。

フォームの作成

次に、わかりやすいニュースレターフォームを作ってみましょう。ユーザーがニュースレターに登録すると、eBookをダウンロードするための無料リンクを提供することを目的としています。これはWPFormsのスマートタグの機能を活用するための素晴らしい例です。一度このスマートタグを設定すれば、今後作成するフォームにコードを追加することなく簡単に組み込むことができます。

新しいカスタムスマートタグを通知に追加するフォームを作成します。

フォームの作成方法については、こちらのドキュメントをご覧ください

新しいカスタム・スマートタグの使用

それでは、新しく作成したカスタムスマートタグを使ってみましょう。このチュートリアルでは、ダウンロードリンク用のスマートタグをメール通知に組み込みます。

まず、フォームビルダーに移動し、[設定]をクリックし、[通知]を選択します。通知設定の中で、メールメッセージボックスまでスクロールダウンします。スマートタグを表示リンクをクリックし、ダウンロードリンクスマートタグが見つかるまで利用可能なスマートタグをブラウズします。選択するだけで、自動的に通知テンプレートに追加されます。

利用可能なスマートタグをスクロールして、前のステップで作成したカスタムスマートタグを見つけます。

よくあるご質問

スマートタグを作成して、ウェブサイトの現在のロケールを動的に追加できますか?

はい、カスタムスマートタグを作成して、ウェブサイトの現在のロケール(例:'fr'、'de'、'en')を取得することができます。実装方法は以下の通りです:

/**
* Register the Smart Tag so it will be available to select in the form builder.
*
* @link https://wpforms.com/developers/how-to-create-a-custom-smart-tag/
*/

function wpf_dev_register_smarttag( $tags ) {

// Key is the tag, item is the tag name.
$tags[ 'page_locale' ] = 'Get Locale';

return $tags;
}
add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag', 10, 1 );

/**
* Process the Smart Tag.
*
* @link https://wpforms.com/developers/how-to-create-a-custom-smart-tag/
* 
* WordPress get_locale(): https://developer.wordpress.org/reference/functions/get_locale/
*/

function wpf_dev_process_smarttag( $content, $tag ) {

// Only run if it is our desired tag.
if ( 'page_locale' === $tag ) {

// Stores the locale returned by the get_locale() function in the variable $locale
$locale = get_locale();

// Replace the tag with the $locale variable value.
$content = str_replace( '{page_locale}', $locale, $content );

}

return $content;
}
add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 2 ); 

このスニペットは、ワードプレスの get_locale() 関数である。

スニペットを追加した後は {page_locale} フォーム、Eメール通知、確認メッセージにスマートタグを追加できます。

これで完了です!これで、新しいカスタムスマートタグが作成できました。そのカスタムスマートタグをHTMLフォームフィールド内で処理できるようにしたいですか?その場合は、HTMLフィールドでスマートタグを処理する方法の記事をご覧ください。

リファレンス・フィルター