ご注意!

この記事には PHP コードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

ACFフィールドからスマートタグを作成する方法

ACF(Advanced Custom Fields)で生成されたフィールドに基づいてカスタムスマートタグを作成することに興味がありますか? このチュートリアルでは、簡潔なコードスニペットを使用して、これらの特殊なスマートタグを作成するプロセスを説明します。

このチュートリアルの例として、投稿を販売ポートフォリオアイテムとして利用するWordPressサイトを考えてみましょう。PHPテンプレートにシームレスに統合される単一のフォームを各投稿ページに表示するように作成します。

ただし、著者が商品を効果的に販売リストするには、それぞれの価格を入力する必要があります。ACFプラグインを活用して、投稿設定に価格フィールドを組み込みました。

この価格フィールドはフォームに事前入力され、表示されている投稿に基づいて動的に更新されます。フォームは投稿間で一定ですが、価格は異なるため、このフィールドにはスマートタグを使用して、各投稿の情報更新で適応できるようにします。

ACFでカスタムフィールドを作成する

まず、Advanced Custom Fieldsプラグインでカスタムフィールドの作成から始めます。

ACFのドキュメントに従って、portfolio_priceという新しいフィールドを投稿に追加しました。

投稿にフィールドを追加するには、ACFのドキュメントに従って新しいカスタムフィールドを作成してください。

このチュートリアルでは、フィールドが既に投稿に追加されていることを前提としています。Advanced Custom Fieldsプラグインを使用してWordPress投稿にフィールドを追加する方法については、ドキュメントを参照してください

ACFフィールドからスマートタグを作成する

通常はまずフォームを作成します。しかし、この新しいスマートタグをフォームビルダー内で使用することがわかっているので、フォームを作成する前にスニペットを追加します。

サイトにスニペットを追加する方法についてサポートが必要な場合は、こちらのチュートリアルをご覧ください

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

function wpf_dev_register_smarttag( $tags ) {
 
    // Key is the tag, item is the tag name.
    $tags[ 'portfolio_price' ] = 'Portfolio Price';
 
    return $tags;
}

add_filter( 'wpforms_smart_tags', 'wpf_dev_register_smarttag' );
 
/**
 * Process the Smart Tag.
 *
 * @link   https://wpforms.com/developers/how-to-create-a-smart-tag-from-an-acf-field/
 */

function wpf_dev_process_smarttag( $content, $tag ) {
 
    // Only run if it is our desired tag.
    if ( 'portfolio_price' === $tag ) {

        //Get the field name from ACF
        $my_acf_field = get_field( 'portfolio_price', get_the_ID() );

        // Replace the tag with our link.
        $content = str_replace( '{portfolio_price}', $my_acf_field, $content );
    }
 
    return $content;
}

add_filter( 'wpforms_smart_tag_process', 'wpf_dev_process_smarttag', 10, 2 );

これらの2つの関数を分解してみましょう。

最初の関数は、「ポートフォリオ価格」という名前の空のスマートタグを作成します。この関数ではまだタグに何も割り当てていません。作成するだけです。

次の関数でスマートタグを定義し、どこから情報を取得するかを定義します。

$my_acf_field = get_field( ‘portfolio_price’, get_the_ID() ); という行で、Advance Custom Fieldsにアクセスしてこのフィールドの値を取得するようにコードに指示しています。ここにフィールド名を入力する必要があります。このチュートリアルでは、フィールド名をportfolio_priceと名付けました。

フィールド名の検索に役立つ情報が必要な場合は、ACFで作成したフィールドを編集し、フィールド名というラベルを探してください。

ACFプラグインで作成したフィールドラベルを探します

フォームの作成

フォームには、名前、メールアドレス、商品タイトル(一行テキスト)、商品価格(一行テキスト)、コメント(段落テキスト)のフォームフィールドがあります。

新しいフォームを作成する

フォームの作成方法については、このチュートリアルを参照してください

スマートタグの追加

フォームでは、投稿タイトルである商品タイトルを取り込みます。これには、WPFormsが既に提供している組み込みスマートタグを使用できます。

商品タイトル一行テキストフィールドを追加したら、詳細設定タブをクリックします。フィールドのデフォルト値で、スマートタグを表示リンクをクリックし、埋め込み投稿/ページタイトルを選択すると、投稿タイトルがこのフォームフィールドに自動的に入力されます。

商品タイトルフィールドのデフォルト値に埋め込み投稿/ページタイトルスマートタグを追加する

次に、この手順を商品価格フィールドに対しても繰り返します。

商品価格フィールドの詳細設定タブで、利用可能なスマートタグから{portfolio_price}スマートタグを選択します。

これでACFからスマートタグを使用できます

PHPテンプレートにWPFormsショートコードを追加する

ショートコードをPHPテンプレートに追加する方法についてサポートが必要な場合は、こちらのチュートリアルをご覧ください

このチュートリアルでは、単一投稿ページテンプレートの最後にショートコードを追加しました。

単一投稿ページテンプレートの最後にショートコードを追加する

これで、投稿が変更されると、フォームの商品価格商品タイトルも同様に変更されることがわかります。

これで商品価格が動的に変更されます

カスタムスマートタグをさらに作成したいですか?カスタムスマートタグの作成方法に関するチュートリアルをご覧ください。

参照フィルター