เพิ่ม hidden field ใน contact form 7 โดยใช้การ hook

ลูกค้า : โอ เวลามีลูกค้ากรอกข้อมูลใน 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] ก็เรียบร้อย

Leave a Reply

Your email address will not be published. Required fields are marked *