การแจ้งเตือน
ลบทั้งหมด

[ได้คำตอบแล้ว] ขอคำแนะนำการเพิ่ม Serial number field ลงใน Forminator ครับ

   RSS

0
หัวข้อเริ่มต้น

ทำแบบฟอร๋มรับสมัคร แล้วมีโจทย์ว่าต้องมี Serial number สำหรับการลงทะเบียนสำหรับแต่ละคน ก็ค้นหาแล้วก็เจออันนี้

https://wordpress.org/support/topic/serial-number-or-auto-increment-number-field/

ลองทำตามแล้วก็ได้ผล คือจะเพิ่มตัวเลขใน field นั้นๆ ทีละ +1

ทีนี้ถ้าเราอยากให้ตัวเลขเป็นประมาณว่า Serial-001, Serial-002, Serial-003, .... เราต้องแก้โค้ดพวกนี้ยังไงครับ

add_filter( 
	'forminator_custom_form_submit_field_data',
	function( $field_data_array, $form_id ){

		// We're using a custom macro <code>AUTOINCREMENT_INT</code> set as value for a field.
		// Make sure you add this value only in hidden fields
		$needle      = 'AUTOINCREMENT_INT';
		$incremental = get_post_meta( $form_id, 'autoincrement_int', true );
		$update_meta = false;

		foreach ( $field_data_array as $key => $field_data ) {
			if ( isset( $field_data[ 'value' ] ) && $needle === $field_data[ 'value' ] ) {

				if ( ! $incremental ) {
					$incremental = 1;
				} else {
					$incremental++;
				}

				$field_data_array[$key][ 'value' ] = $incremental;
				$update_meta                       = true;
			}
		}

		if ( $update_meta ) {
			update_post_meta( $form_id, 'autoincrement_int', $incremental );
		}

		return $field_data_array;
	},
	20, 
	2
);

 😀  

แท็กหัวข้อ
4 คำตอบ
1

อันนี้ยังไม่มีจุดสำหรับเทส แต่คิดว่าเพิ่มโค้ดประมาณนี้น่าจะได้นะครับ

 

add_filter( 
	'forminator_custom_form_submit_field_data',
	function( $field_data_array, $form_id ){

		// We're using a custom macro <code>AUTOINCREMENT_INT</code> set as value for a field.
		// Make sure you add this value only in hidden fields
		$needle      = 'AUTOINCREMENT_INT';
		$incremental = get_post_meta( $form_id, 'autoincrement_int', true );
		$update_meta = false;

		foreach ( $field_data_array as $key => $field_data ) {
			if ( isset( $field_data[ 'value' ] ) && $needle === $field_data[ 'value' ] ) {

				if ( ! $incremental ) {
					$incremental = 1;
				} else {
					$incremental++;
				}
                                $serial = 'Serial-';
                                $serial .= $incremental;

				$field_data_array[$key][ 'value' ] = $serial;
				$update_meta                       = true;
			}
		}

		if ( $update_meta ) {
			update_post_meta( $form_id, 'autoincrement_int', $incremental );
		}

		return $field_data_array;
	},
	20, 
	2
);

 

1

เพิ่มเติมว่า ตอนนี้ Forminator เปลี่ยน Hook หลายๆ จุด จาก forminator_custom_form_xxx เป็น forminator_form_xxx แล้วนะครับ เค้ายังไม่ได้อัปเดตคู่มือ แต่ผมไปแกะในโค้ดเจอครับ

ถ้าโค้ดที่เคยใช้ได้ แล้วใช้ไม่ได้ ลองเปลี่ยนชื่อตัวแปรดูนะครับ

0
หัวข้อเริ่มต้น

ใช้ได้ครับ ขอบคุณมากๆ ครับ

Screen Shot 2564 07 05 at 17.21.40
0

วิธีแอดตัวนี้มั้ยครับ ใช้ยังไงครับ เอาไปเพี่ม ใน mu plugin แล้วมันไปออก header 

ผมใช้ plug in ที่ชื่อว่า My custom function ที่พี่ๆ เขาแนะนำกันน่ะครับ เอาโค้ดไปแปะ แล้ว ON ใช้ได้เลย

แบ่งปัน: