ご注意!

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

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

閉じる

説明

wpforms_post_submissions_process_meta フィルターは、カスタムフィールドに保存される値(update_post_meta() に渡される値)に対して実行されます。

パラメーター

$field_value
(string) フォームからのフィールド値。
$meta_key
(string) カスタムフィールドのメタキー。
$field_id
(int) フィールドID。
$fields
(array) サニタイズされたエントリーフィールドの値/プロパティ。
$form_data
(配列)  後で使用するために処理および準備されたフォーム設定/データ。

ソース

wpforms-post-submissions/class-post-submissions.php

詳細情報

このフィルターは、Post Submissions Addon から保存されるフィールドの値を変更するために使用できます。

以下は、このフィルターを使用して post_meta の保存に UNIX タイムスタンプを使用するように変更するコードスニペットの例です。

/**
 * Customize post_meta value during WPForms Post Submissions processing.
 *
 * @link   https://wpforms.com/developers/wpforms_post_submissions_process_meta/
 *
 * @param  string  $field_value  Field value from the form.
 * @param  string  $meta_key     Custom field meta key.
 * @param  int     $field_id     Field ID.
 * @param  array   $fields       Sanitized entry field values/properties.
 * @param  array   $form_data    Processed form settings/data, prepared to be used later.
 *
 * @return string
 */

function wpf_post_submission_process_meta( $field_value, $meta_key, $field_id, $fields, $form_data ) {

	// Only run on my form with ID = 443
        if ( absint( $form_data[ 'id' ] ) !== 443 ) {
                return;
        } 
	
	// If the field has a specific meta key and contains a unix time stamp,
	// use that for the post_meta value.
	if ( $meta_key === 'some_post_meta_key' && ! empty( $fields[ $field_id ][ 'unix' ] ) ) {
		$field_value = $fields[ $field_id ][ 'unix' ];
	}

	return $field_value;
}
add_filter( 'wpforms_post_submissions_process_meta', 'wpf_post_submission_process_meta', 10, 5 );

コード内のメタキーを、使用しているメタキーと一致するように置き換えることを忘れないでください。また、フォームID 443 も同様です。フォームIDの見つけ方がわからない場合は、この役立つドキュメントを確認してください

記事参照: チェックボックスの値を配列として保存する方法(Post Submissions)