ลูกค้า : โอ เวลามีลูกค้ากรอกข้อมูลใน Inquire Form แล้วมันส่งเมลกลับมาให้พี่ แต่พี่ไม่รู้ว่าเค้ามาจากเว็บไหน มีวิธีไหม
โอ : ขอดูเมลที่ส่งกลับมาให้หน่อยครับพี่
หลังจากตรวจดูเมลนั้นแล้ว พบว่าส่งมาจาก plugin ชื่อ Contact Form 7 เอาละครับ เรามาดูกันว่าจะมีวิธีแก้ปัญหาอย่างไร
– สิ่งแรกที่ผมทำคือการหา Hook ของ Contact Form 7 ก่อนเลย ก็ไปเจอกับ wpcf7_form_hidden_fields เกี่ยวกับ hidden field
function filter_wpcf7_form_hidden_fields( $array ) {
return $array;
};
add_filter( 'wpcf7_form_hidden_fields', 'filter_wpcf7_form_hidden_fields', 10, 1 );
จากนั้นก็เอาชื่อ wpcf7_form_hidden_fields ไปหาใน Contact Form 7 เพื่อดูว่า code ทำงานอย่างไร ซึ่งการทำงานของมันคืน เราส่งค่า name กับ value ไปแล้วมันก็จะสร้าง hidden field ใน Form ให้เรา
<input type="hidden" name="?" value="?">
สิ่งที่ผมต้องการคือ การส่ง url ไปในอีเมล
function filter_wpcf7_form_hidden_fields( $array ) {
$id = get_the_ID();
$link = get_permalink($id);
return array(
'property_id' => $id,
'property_link' => $link
);
return $array;
};
add_filter( 'wpcf7_form_hidden_fields', 'filter_wpcf7_form_hidden_fields', 10, 1 );
<input type="hidden" name="property_id" value="?"> <input type="hidden" name="property_link" value="?">
เนื่องจาก Inquire Form อยู่เฉพาะหน้า Property ซึ่งเป็น Custom PostTyp เราก็เพิ่มเงื่อนไขไปอีกนี้ ให้แสดงเฉพาะที่หน้านั้น
function filter_wpcf7_form_hidden_fields( $array ) {
if( is_single() and is_singular('property') ){
$id = get_the_ID();
$link = get_permalink($id);
return array(
'property_id' => $id,
'property_link' => $link
);
return $array;
}
};
add_filter( 'wpcf7_form_hidden_fields', 'filter_wpcf7_form_hidden_fields', 10, 1 );
เท่านี้ก็เรียบร้อย เพื่อ hidden field ใน Contact Form 7 ได้แระ สุดท้าย เราก็เอา field name ไปใส่ใน Setting ของ Form
วิธีใช้ก็แค่ใส่ [property_link] ก็เรียบร้อย
