WPFormsエントリーにフィールド値を格納する方法

ドロップダウンチェックボックス複数選択フィールドのフィールド値をWPFormsのエントリー内に保存したいですか?このチュートリアルでは、PHPを使ってフィールドラベルの代わりにフィールドの値を取得し、エントリーの内部に保存する方法を紹介します。

エントリーの中に値を格納する

このチュートリアルでは、フォームを作成する前に、まずスニペットをサイトに追加します。これは、このスニペットの一部が、ドロップダウンチェックボックス複数選択肢のフィールドの値を表示するオプションを有効にするためです。

スニペットの追加方法と場所については、こちらのチュートリアルをご覧ください

/**
 * Show values in Dropdown, checkboxes, and Multiple Choice.
 */
  
add_action( 'wpforms_fields_show_options_setting', '__return_true' );


/**
 * Save choices 'values' instead of 'labels' for the fields with 'Show values' option enabled.
 *
 * @link https://wpforms.com/developers/how-to-store-field-values-in-the-wpforms-entry/
 */

function wpf_dev_process_filter_choices_values( $fields, $entry, $form_data ) {

	if ( ! is_array( $fields ) ) {
		return $fields;
	}

	foreach ( $fields as $field_id => $field ) {
		if (
			isset( $field[ 'type' ] ) &&
			in_array( $field[ 'type' ], [ 'checkbox', 'radio', 'select' ], true ) &&
			! empty( $form_data[ 'fields' ][ $field_id ][ 'show_values' ] )
		) {
			$value_raw = ! empty( $field[ 'value_raw' ] ) ? $field[ 'value_raw' ] : '';
			$field[ 'value_raw' ] = $field[ 'value' ];
			$field[ 'value' ] = $value_raw;
			$fields[ $field_id ] = $field;
		}
	}

	return $fields;
};
add_filter( 'wpforms_process_filter', 'wpf_dev_process_filter_choices_values', 10, 3 );

2つの別々のスニペットを追加しました。最初のスニペットはこのチュートリアルに従ったもので、ドロップダウンチェックボックス複数選択肢フィールドのフィールド値を追加できるようにします。

2番目のスニペットは、フォーム送信を受け取り、処理中にフィールド・ラベルの代わりにフィールド値を取得してエントリーに保存する。

フォームの作成

フォームを作成し、ドロップダウンチェックボックス多肢選択式のフィールドを追加します。

フォームの作成にヘルプが必要な場合は、詳細なドキュメントをご覧ください

フォームを作成し、フィールドを追加します。

このドキュメントの目的のために、コンタクトのプリファレンスのドロップダウンフィールドを追加しました。フィールドの値を追加するには、フィールドを選択し、詳細設定タブをクリックします。

ボタンをクリックして、「値を表示」をオンにします。

ボタンをクリックして「値を表示」をオンにしてから、「全般」タブに戻ってフィールド値を追加します。

フィールドに必要な値を追加する

フォームを保存すると、フィールドの値がフィールドラベルではなく、フォームエントリーの中に保存されていることがわかります。

このスニペットを使えば、フィールドの値をエントリーに保存することができる。

Zapierアドオンを使用してフィールド値も送信したいですか?Zapierを使用してフィールド値をExcelに送信する方法のチュートリアルをご覧ください。

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

wpforms_process_filter

よくあるご質問

Q: 単一のフォームだけをターゲットにするにはどうすればいいですか?

A:1つのフォームだけをターゲットにするには、代わりにこのスニペットを使ってください。584を自分のフォームIDに合わせて更新する必要があります。フォームIDを調べるには、こちらのチュートリアルをご覧ください

/**
 * Show values in Dropdown, checkboxes, and Multiple Choice.
 *
 * @link https://wpforms.com/developers/add-field-values-for-dropdown-checkboxes-and-multiple-choice-fields/
 */
   
add_action( 'wpforms_fields_show_options_setting', '__return_true' );

/**
 * Save choices 'values' instead of 'labels' for the fields with 'Show values' option enabled.
 *
 * @link https://wpforms.com/developers/how-to-store-field-values-in-the-wpforms-entry/
 */
function wpf_dev_process_filter_choices_values( $fields, $entry, $form_data ) {
	
	// Optional, you can limit to specific forms. Below, we restrict output to
    // form #584.
    if ( absint( $form_data[ 'id' ] ) !== 584 ) {
        return $fields;
    }
 
    if ( ! is_array( $fields ) ) {
        return $fields;
    }
 
    foreach ( $fields as $field_id => $field ) {
        if (
            isset( $field[ 'type' ] ) &&
            in_array( $field[ 'type' ], [ 'checkbox', 'radio', 'select' ], true ) &&
            ! empty( $form_data[ 'fields' ][ $field_id ][ 'show_values' ] )
        ) {
            $value_raw = ! empty( $field[ 'value_raw' ] ) ? $field[ 'value_raw' ] : '';
            $field[ 'value_raw' ] = $field[ 'value' ];
            $field[ 'value' ] = $value_raw;
            $fields[ $field_id ] = $field;
        }
    }
 
    return $fields;
};
add_filter( 'wpforms_process_filter', 'wpf_dev_process_filter_choices_values', 10, 3 );