WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm using a Contact Form 7 filter to take action after the email is sent. How can I limit this action to only one form? There are multiple forms on different pages, and I don't want this action to run after every form, only one specific form.

I tried limiting the action to the page where the form is using an if clause, but then the "action" doesn't complete. Once I remove the if clause, then the action works.

function foo() {

   if(is_page('bar') {

     // some action
add_action( 'wpcf7_mail_sent', 'foo', 1 );
share|improve this question

closed as off-topic by toscho Jul 26 '14 at 9:52

This question appears to be off-topic. The users who voted to close gave this specific reason:

If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 2 down vote accepted

You know the id of the form from the shortcode, you can do stuff just for that particular form. Here's some sample code for that, just replace $myform_id with your form id:

add_action( 'wpcf7_mail_sent', 'wp190913_wpcf7' );

 * Do stuff for my contact form form. This function shouldn't return aything
 * @param WPCF7_ContactForm $contact_form wpcf7 object, passed by refference
function wp190913_wpcf7( $contact_form ) {

    // Not my desired form? bail
    if ( $contact_form->id !== $myform_id )

    // Do stuff for my contact form
share|improve this answer
Thanks. Accepted and upvoted. – chowwy Sep 19 '13 at 22:16

Not the answer you're looking for? Browse other questions tagged or ask your own question.