I am working on a WordPress Theme and I am trying to get the custom contact form that came with the theme to redirect to a thank you page after successful completion so I can use adwords conversion tracking.
Although I’ve looked through Stackflows previous questions/answers on this topic, I’m struggling to find the right code / solution to my problem (To be frank I have very little knowledge of code). I would be very greatful for any help with this! Here’s the code…
<?php
/*
Template Name: Contact Form
*/
?>
<?php
global $woo_options;
$nameError = '';
$emailError = '';
$commentError = '';
//If the form is submitted
if(isset($_POST['submitted'])) {
//Check to see if the honeypot captcha field was filled in
if(trim($_POST['checking']) !== '') {
$captchaError = true;
} else {
//Check to make sure that the name field is not empty
if(trim($_POST['contactName']) === '') {
$nameError = __( 'You forgot to enter your name.', 'woothemes' );
$hasError = true;
} else {
$name = trim($_POST['contactName']);
}
//Check to make sure sure that a valid email address is submitted
if(trim($_POST['email']) === '') {
$emailError = __( 'You forgot to enter your email address.', 'woothemes' );
$hasError = true;
} else if (!eregi( "^[A-Z0-9._%-]+@[A-Z0-9._%-]+.[A-Z]{2,4}$", trim($_POST['email']))) {
$emailError = __( 'You entered an invalid email address.', 'woothemes' );
$hasError = true;
} else {
$email = trim($_POST['email']);
}
//Check to make sure comments were entered
if(trim($_POST['comments']) === '') {
$commentError = __( 'You forgot to enter your comments.', 'woothemes' );
$hasError = true;
} else {
if(function_exists( 'stripslashes')) {
$comments = stripslashes(trim($_POST['comments']));
} else {
$comments = trim($_POST['comments']);
}
}
//If there is no error, send the email
if(!isset($hasError)) {
$emailTo = get_option( 'woo_contactform_email' );
$subject = __( 'Contact Form Submission from ', 'woothemes' ).$name;
$sendCopy = trim($_POST['sendCopy']);
$body = __( "Name: $name nnEmail: $email nnComments: $comments", 'woothemes' );
$headers = __( 'From: ', 'woothemes') . "$name <$email>" . "rn" . __( 'Reply-To: ', 'woothemes' ) . $email;
//Modified 2010-04-29 (fox)
wp_mail($emailTo, $subject, $body, $headers);
if($sendCopy == true) {
$subject = __( 'You emailed ', 'woothemes' ).get_bloginfo( 'title' );
$headers = __( 'From: ', 'woothemes' ) . "$name <$emailTo>";
wp_mail($email, $subject, $body, $headers);
}
$emailSent = true;
}
}
} ?>
<?php get_header(); ?>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
jQuery(document).ready(function() {
jQuery( 'form#contactForm').submit(function() {
jQuery( 'form#contactForm .error').remove();
var hasError = false;
jQuery( '.requiredField').each(function() {
if(jQuery.trim(jQuery(this).val()) == '') {
var labelText = jQuery(this).prev( 'label').text();
jQuery(this).parent().append( '<span class="error"><?php _e( 'You forgot to enter your', 'woothemes' ); ?> '+labelText+'.</span>' );
jQuery(this).addClass( 'inputError' );
hasError = true;
} else if(jQuery(this).hasClass( 'email')) {
var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;
if(!emailReg.test(jQuery.trim(jQuery(this).val()))) {
var labelText = jQuery(this).prev( 'label').text();
jQuery(this).parent().append( '<span class="error"><?php _e( 'You entered an invalid', 'woothemes' ); ?> '+labelText+'.</span>' );
jQuery(this).addClass( 'inputError' );
hasError = true;
}
}
});
if(!hasError) {
var formInput = jQuery(this).serialize();
jQuery.post(jQuery(this).attr( 'action'),formInput, function(data){
jQuery( 'form#contactForm').slideUp( "fast", function() {
jQuery(this).before( '<p class="tick"><?php _e( '<strong>Thanks!</strong> Your email was successfully sent.', 'woothemes' ); ?></p>' );
});
});
}
return false;
});
});
//-->!]]>
</script>
<div id="content" class="col-full">
<div id="main" class="col-left">
<?php if ( isset($woo_options[ 'woo_breadcrumbs_show' ]) && $woo_options[ 'woo_breadcrumbs_show' ] == 'true' ) { ?>
<div id="breadcrumbs">
<?php woo_breadcrumbs(); ?>
</div><!--/#breadcrumbs -->
<?php } ?>
<div id="contact-page" class="post">
<?php if(isset($emailSent) && $emailSent == true) { ?>
<p class="info"><?php _e( 'Your email was successfully sent.', 'woothemes' ); ?></p>
<?php } else { ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<h1 class="title"><?php the_title(); ?></h1>
<div class="entry">
<?php the_content(); ?>
</div>
<?php $geocoords = $woo_options['woo_contactform_map_coords']; ?>
<?php if ($geocoords != '') { ?>
<?php woo_maps_contact_output("geocoords=$geocoords"); ?>
<?php echo do_shortcode( '[hr]' ); ?>
<?php } ?>
<?php if(isset($hasError) || isset($captchaError) ) { ?>
<p class="alert"><?php _e( 'There was an error submitting the form.', 'woothemes' ); ?></p>
<?php } ?>
<?php if ( get_option( 'woo_contactform_email') == '' ) { ?>
<?php echo do_shortcode( '[box type="alert"]'.__( 'E-mail has not been setup properly. Please add your contact e-mail!', 'woothemes' ).'[/box]' ); ?>
<?php } ?>
<form action="<?php the_permalink(); ?>" id="contactForm" method="post">
<ol class="forms">
<li><label for="contactName"><?php _e( 'Name', 'woothemes' ); ?></label>
<input type="text" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" class="txt requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?php echo $nameError;?></span>
<?php } ?>
</li>
<li><label for="email"><?php _e( 'Email', 'woothemes' ); ?></label>
<input type="text" name="email" id="email" value="<?php if(isset($_POST['email'])) echo $_POST['email'];?>" class="txt requiredField email" />
<?php if($emailError != '') { ?>
<span class="error"><?php echo $emailError;?></span>
<?php } ?>
</li>
<li class="textarea"><label for="commentsText"><?php _e( 'Message', 'woothemes' ); ?></label>
<textarea name="comments" id="commentsText" rows="20" cols="30" class="requiredField"><?php if(isset($_POST['comments'])) { if(function_exists( 'stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?></textarea>
<?php if($commentError != '') { ?>
<span class="error"><?php echo $commentError;?></span>
<?php } ?>
</li>
<li class="inline"><input type="checkbox" name="sendCopy" id="sendCopy" value="true"<?php if(isset($_POST['sendCopy']) && $_POST['sendCopy'] == true) echo ' checked="checked"'; ?> /><label for="sendCopy"><?php _e( 'Send a copy of this email to yourself', 'woothemes' ); ?></label></li>
<li class="screenReader"><label for="checking" class="screenReader"><?php _e( 'If you want to submit this form, do not enter anything in this field', 'woothemes' ) ?></label><input type="text" name="checking" id="checking" class="screenReader" value="<?php if(isset($_POST['checking'])) echo $_POST['checking'];?>" /></li>
<li class="buttons"><input type="hidden" name="submitted" id="submitted" value="true" /><input class="submit button" type="submit" value="<?php esc_attr_e( 'Submit', 'woothemes' ); ?>" /></li>
</ol>
</form>
<?php endwhile; ?>
<?php endif; ?>
<?php } ?>
</div><!-- /#contact-page -->
</div><!-- /#main -->
<?php get_sidebar(); ?>
</div><!-- /#content -->
<?php get_footer(); ?>
Apologies for posting all the code (related to not having a clue) but I’m not sure which bits are relevant/requiring changing. Many thanks in advance for any help!
What would you like to achieve exactly? After the confirmation email is sent you want to redirect the user to a complete different page?
You can do that in PHP and it will be as simple as replacing the line:
with something like this:
Or you could use javascript/jquery to redirect the user after a couple of seconds after showing the “email was successfully sent” message.