Bump. This feature would be very helpful, as one could add a ‘Get Email Updates’ checkbox to any form, and have it used as a Condition for external posting.
Plugin Author
zaus
(@zaus)
Can you add it as an issue (feature request) on Github?
You could write a hook on on Forms3rdPartyIntegration_use_form and inspect the $form argument, then return false on your condition.
Or you could hook to Forms3rdPartyIntegration_service_filter_args later down and set response_bypass so it skips over the post. You’d have access to already transformed submission by then.
Sure, I posted it here:
https://github.com/zaus/forms-3rdparty-integration/issues/34
I really appreciate your suggestion, but am not familiar with how to actually write the hooks.
Plugin Author
zaus
(@zaus)
I think something like:
add_filter('Forms3rdPartyIntegration_service_filter_args', 'forms3rdparty_conditional_send', 10, 3);
function forms3rdparty_conditional_send($post_args, $service, $form) {
// inspect transformed submission body for presence/lack/value of the desired value
if( !isset($post_args['body']['my-conditional-field']) ) {
// set plugin bypass -- will treat this as though it had sent the submission; we don't want the plugin to think it failed
$post_args['response_bypass'] = array('body' => 'OKAY'); // essentially a success placeholder
}
return $post_args;
}
Plugin Author
zaus
(@zaus)
Did you end up trying that?
I was unable to implement the filter.
Plugin Author
zaus
(@zaus)
Meaning you didn’t get a chance to try it, or you tried it and it blew up your website?
Plugin Author
zaus
(@zaus)
Ahh jeez…my mistake.
I forgot that the response_bypass should return a response that looks just like a real wp_post response — see source line https://github.com/zaus/forms-3rdparty-integration/blob/master/forms-3rdparty-integration.php#L507
You’re probably getting a ‘physical request failure’ message, right? The function should instead return:
$post_args['response_bypass'] = array('body' => 'OKAY', 'response' => array('code' => 200));
I did not feel sufficiently confident trying this on my server.
This is working for me now…. except for one thing. I set up a checkbox for users to select when they want to sign up for a newsletter… but the value for that checkbox does not get passed in for me to take action on. I’ve tweaked the checkbox for default values… but no luck. When I debug the form submission, I am only seeing my hidden and the text input values being submitted (e.g., I print_r’d the $_POST values to see what was being sent). The form HTML looks good too.
Anyone have a situation like this? A solution?
Plugin Author
zaus
(@zaus)
Could you try switching it to a dropdown our radio instead to see if that makes a difference? Kinda lame though…
Usually a checkbox only shows up at all in the post if it was checked, otherwise it won’t be there, so you should be able to use isset rather than compare the value. It would be different for a radio input, I think, which would include the value.
Also, which form plugin are you using? It might affect how it transmits the field.
Great plugin! Worked great to integrate with our client’s CRM. But, the client does have a custom request.
If a person selects the following states, it should post to the branch CRM URL.
AL
AR
CA
CO
FL
GA
KS
LA
IA
IL
IN
MD
MI
MN
NV
NC
NH
NJ
NM
OK
OH
OR
SC
TN
TX
VA
WA
WI
WY
If a person selects any other state, it should post to the corp office CRM post URL.
Thoughts on the hook for this? Thank you!!
Plugin Author
zaus
(@zaus)
@humanatv — you’re asking for something different, please start a new thread.
But you’d have to use the response_bypass trick so you can make your own wp_remote_post call (see https://github.com/zaus/forms-3rdparty-integration/blob/master/forms-3rdparty-integration.php#L478)
Thank you zaus! That gets me pointed in the right direction.