Thanks Nick. I assume this goes in the functions.php of the theme, as per the Readme.txt instructions?
Yes.
Or, ideally, a functionality plugin π
Do I need to identify the form number in the add_filter? I’m using multiple forms, and can’t seem to get it to work yet on the main contact form (#1).
Nope. It runs on all fields of all forms by default.
Show me your code and link to the form and I can probably spot the error ;-$
Here’s a link to our contact form…
Contact Form
I copied and pasted the code from the sf_w2l_user_ip.php file and changed the custom ip field name to “IP_Address__c”, as it is in SalesForce and on our contact form’s hidden field.
Thanks.
Specifically, this is what I added to the Functions.php file.
/*----------------------------------------------------------------------*/
/* Custom function for IP Address Tracking in Contact Form
/*----------------------------------------------------------------------*/
// Save user ip in a specific field
// -- replace IP_Address__c with your custom field name
// -- make a hidden text field in your lead form (make sure it's enabled)
// -- make sure it can store up to 45 characters (for IPv6 addresses)
add_filter( 'salesforce_w2l_field_value', 'salesforce_w2l_ip_field', 10, 3 );
function salesforce_w2l_ip_field( $val, $field, $form ){
$my_ip_field = 'IP_Address__c';
// Target a specific field on all forms
if( $field == my_ip_field ){
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$val = $ip;
}
return $val;
}
You did enable your hidden field, right? I don’t see it in the source so it’s not being processed by the filter.
Hi Nick!
I found a small error on your code. You can notice on line 14 that ‘my_ip_field’ don’t have ‘$’ prefix.
if( $field == my_ip_field ){
This may be obvious to some but others might not notice this easily.
Gist updated. Thanks for catching that!