<html lang="ja-jp" dir="ltr"><head></head><body>### [投稿送信でチェックボックスの値を配列として保存する方法](https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/)

**公開日:** 2020年8月14日
**著者:** Umair Majeed

**抜粋:** このチュートリアルでは、投稿送信フォームからのチェックボックスの値を配列として保存する方法を説明します。

**コンテンツ:**

## はじめに

[Advanced Custom Fields](https://www.advancedcustomfields.com/ "Advanced Custom Fields Plugin") プラグインから作成したカスタムメタフィールドに、**投稿送信**フォームの**チェックボックス**の値を配列として保存したいですか？簡単なPHPスニペットを使用すると、これらの値をカスタムフィールドの配列として保存できます。

デフォルトでは、カスタムフィールドが**投稿送信**アドオンでマッピングされると、WPFormsはカスタムフィールドのデータを、WPFormsがすべてのフォームのデータを保存するのと同じ形式で保存します。

例として、**チェックボックス**フォームフィールド（および複数の値を持つもの）の場合、WPFormsは値を単一の文字列として保存し、各値は新しい行に表示されます。

`RedGreenBlue`

しかし、簡単なPHPスニペットを使用すると、これを配列として保存するように簡単に変更できます。

`array( 'Red', 'Green', 'Blue')`

## カスタムフィールドの作成

まず、[Advanced Custom Fields プラグイン](https://www.advancedcustomfields.com/ "Advanced Custom Fields Plugin")を使用して、投稿用のカスタムフィールドを作成します。

カスタムフィールドの設定に関する詳細情報が必要な場合は、[この記事を参照してください](https://wpforms.com/how-to-use-custom-fields-in-user-submitted-posts/ "WordPressゲスト投稿でカスタムフィールドを使用する方法")。

ACFフィールドを設定する際は、フィールドタイプを一致させることを忘れないでください。チェックボックスのカスタムフィールドを作成した場合は、フォームフィールドもチェックボックスであることを確認してください。

![カスタムフィールドを投稿に作成する](https://wpforms.com/wp-content/uploads/2020/08/acf-custom-field.jpg)## フォームの作成

次に、投稿送信フォームを作成し、フォームに**チェックボックス**フィールドを追加します。

![フォームにチェックボックスフィールドを追加する](https://wpforms.com/wp-content/uploads/2020/08/add-checkbox-to-wpforms.jpg)投稿送信フォームの設定にサポートが必要な場合は、[このドキュメントを参照してください](https://wpforms.com/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/)。

残りのフィールドをフォームに追加したら、**設定**タブに移動し、**投稿送信**をクリックして、カスタムフィールドが正しくマッピングされていることを確認します。

![フォームビルダーの投稿送信タブで、すべてのカスタムフィールドをマッピングすることを確認してください](https://wpforms.com/wp-content/uploads/2020/08/wpforms-setup-custom-field-mapping.jpg)## 値を配列として保存するスニペットの追加

値を配列として保存するには、このスニペットをサイトにコピーするだけです。

サイトへのスニペットの追加にヘルプが必要な場合は、[このチュートリアルを参照してください](https://wpforms.com/developers/how-to-add-custom-php-or-javascript-for-wpforms/ "WPFormsにカスタムPHPまたはJavaScriptを追加する方法")。

```

/**
 * チェックボックスの値を配列に変換します。
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
  
function wpf_dev_post_submission_process_meta( $field_value, $meta_key, $field_id, $fields, $form_data ) {
 
    // ID = 443 の私のフォームでのみ実行します
    if ( absint( $form_data[ 'id' ] ) !== 443 ) {
            return;
    } 
      
    // $meta_key 名は、Advanced Custom Fields のフィールド名に表示されるのと同じ名前です
    if ( $meta_key === 'have_visited' ) {
 
            $field_value = explode( "\n", $field_value );
 
        }
  
    return $field_value;
}
add_filter( 'wpforms_post_submissions_process_meta', 'wpf_dev_post_submission_process_meta', 10, 5 );

```

**注意**: WPForms のエントリー画面や、投稿を編集する際のメタフィールドでは、引き続きチェックボックスが表示されることに注意してください。配列として表示されるのは、値をエコーアウトするときだけです（1行で表示され、次のステップで示します）。また、フォームIDを `443` から自分のフォームIDに合わせて更新することを忘れないでください。フォームIDの見つけ方がわからない場合は、[この役立つドキュメントを確認してください](https://wpforms.com/developers/how-to-locate-form-id-and-field-id/)。

## 値の表示

次に、これらの値を単一投稿テンプレートに表示します。WPFormsはテーマに直接変更を加えることを推奨しないため、子テーマまたはカスタム関数を使用してテンプレートにエコーアウトするのが最善です。

子テーマの作成に関する詳細については、[WPBeginner の優れた記事をご覧ください](https://www.wpbeginner.com/wp-themes/how-to-create-a-wordpress-child-theme-video/ "WordPress子テーマの作成方法")。

![単一投稿テンプレートで値を配列として表示する](https://wpforms.com/wp-content/uploads/2020/08/wpforms-display-values.jpg)```

        過去5年間でこれらの州を訪れました:

```

このチュートリアルの目的のために、子テーマを作成し、**single.php** にこのコード行を追加して、まず値が存在することを確認し、存在する場合は表示します。

投稿が表示されると、州は行ごとの表示ではなく、段落形式でリストされます。

![チェックボックスの値が1行で表示されるようになりました](https://wpforms.com/wp-content/uploads/2020/08/wpforms-display-custom-field-meta.jpg)これで、WordPressデータベースにこれらの値がどのように保存されるかが正常に変更されました。チェックボックスフォームフィールドのラベルにテキストの代わりに画像を使用したいですか？[CSSを使用してチェックボックスラベルに画像を適用する方法](https://wpforms.com/developers/how-to-apply-images-to-checkbox-labels-using-css/ "CSSを使用してチェックボックスラベルに画像を適用する方法") に関する記事をご覧ください。

## 関連

フィルターリファレンス: [wpforms\_post\_submissions\_process\_meta](https://wpforms.com/developers/wpforms_post_submissions_process_meta/ "WPFormsでwpforms_post_submissions_process_metaを使用する")

## FAQ

#### A: 他のアドオンでも使用できますか？

A: もちろんです！たとえば、このチュートリアルで説明したのと同じシナリオで、**ユーザー登録アドオン**に追加して、ACFを使用してWordPressユーザープロファイルにさらに情報を追加しながら、自動的にユーザープロファイルページに保存されるようにすることができます。

User Registration アドオンバージョン2.8.0以降では、カスタムメタ値の保存フィルターは次のようになります。

`wpforms_user_registration_process_base_custom_meta_value`

**注意:** 古いバージョン（User Registration 2.8.0より前）では、このフィルターは次のように名前が付けられていました。

`wpforms_user_registration_process_registration_custom_meta_value`

レガシーサイトを保守している場合は、後方互換性のために両方のフックを保持できます。

```

/**
 * User Registration アドオンでチェックボックスの値を配列に変換します。
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
function wpf_dev_user_submission_process_meta( $field_value, $meta_key = '', $field_id = 0, $field = array(), $form_data = array() ) {

	// $meta_key 名は、Advanced Custom Fields のフィールド名に表示されるのと同じ名前です。
	if ( $meta_key === 'have_visited' ) {
		$field_value = explode( "\n", $field_value );
	}

	return $field_value;
}

// User Registration アドオン 2.8.0 以降。
add_filter( 'wpforms_user_registration_process_base_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

// 古いバージョン（2.8.0より前）の後方互換性。
add_filter( 'wpforms_user_registration_process_registration_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );
```

これで、WPForms がカスタム投稿メタフィールドにマッピングするときに、送信されたチェックボックスの値が配列として保存されるようになります。

投稿送信の設定方法、カスタム投稿メタフィールドのマッピング方法など、詳細については、[投稿送信アドオンガイド](https://wpforms.com/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/)をご覧ください。(https://wpforms.com/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/?utm_source=chatgpt.com)

**カテゴリー:** チュートリアル

**タグ:** PHP

---</body></html>