Igenom att använda WPForms action kallad wpforms_process_complete kan vi fånga upp värden från en lyckad inlämning.Vi specificerar vårt formulärs ID samt vilket input fält vi skall lagra i kakor.

Parametrar

  • $fields
    • En array med våra formulärfält & data
  • $entry
    • En array utav globala $_POST
  • $form_data
    • En aray med formulärets inställningar & data
  • $entry_id
    • En int med inlämningens ID. Returnerar 0 om inlämningar ej sparas eller WpForms Lite.

Läs mer om wpforms_process_complete

Vår funktion

// Lagra kakor från ena formuläret, används för autofyll
function index_form_process_complete( $fields, $entry, $form_data, $entry_id ) {
  if ( absint( $form_data['id'] ) !== 10944 ) { // om ej detta form ID, bryt
    return;
  }

  // Lagra inkommande data
  $entry = wpforms()->entry->get( $entry_id );

  // Decode -> JSON
  $entry_fields = json_decode( $entry->fields, true );
  // Fält vi vill lagra i cookies
  $product_id = $entry_fields[6]['value'];
  $variation_id = $entry_fields[10]['value'];
  $steps = $entry_fields[3]['value'];

  // Lagra specifikt fält som kaka (i en timmme)
  setcookie( 'form-product-id', $product_id, time() + 3600, COOKIEPATH, COOKIE_DOMAIN );
  setcookie( 'form-variation-id', $variation_id, time() + 3600, COOKIEPATH, COOKIE_DOMAIN );
  setcookie( 'form-steps', $steps, time() + 3600, COOKIEPATH, COOKIE_DOMAIN );
}
add_action( 'wpforms_process_complete', 'index_form_process_complete', 10, 4 );

Här är JS som använts för att autofylla ett formulär med samma innehåll.

function autofill(product_id, steps) {
  // simlulate click
  document.getElementById(product_id).click()
  document.querySelector('.steps_amount select').value = steps
}

function checkCookie() {
  let variation_id = getCookie('form-variation-id'),
      product_id = getCookie('form-product-id'),
      steps = getCookie('form-steps').replace('%20',' ');
  if (variation_id != '' || product_id != '') {
    document.querySelector('.product_id_inherited input[type="hidden"]').value = product_id
    document.querySelector('.stairs_variation input[type="hidden"]').value = variation_id
    autofill(product_id, steps)
    console.info('🍪 Autofyll was here')
  }
}

window.addEventListener('load', function() {
  checkCookie()
})