Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Contact form functionality
- * Used within the loop
- * @link https://developer.wordpress.org/reference/functions/wp_nonce_field/
- * @link https://codex.wordpress.org/Class_Reference/WP_Error
- */
- if ( ! defined( 'ABSPATH' ) ) exit;
- function my_contact_form(){
- global $reg_errors;
- $reg_errors = new WP_Error;
- $email_invalid = "Email Address Invalid.";
- $name_required = "Name Required.";
- $email_required = "Email Address Required.";
- $phone_required = "Phone Required.";
- $text_required = "Message Text Required.";
- $missing_content = "Please supply all information.";
- $message_unsent = "Message was not sent. Try Again.";
- $message_sent = "Thanks! Your message has been sent.";
- $recaptcha_required = "Are you robot?";
- if (isset($_POST['submitted']) && wp_verify_nonce( $_POST['gymclub_nonce_field'], 'custom_action_nonce')){
- //user posted variables
- $name = isset ($_POST['message_name'])? esc_sql(sanitize_text_field($_POST['message_name'])):"";
- $email = isset($_POST['message_email'])? esc_sql(sanitize_text_field(sanitize_email($_POST['message_email']))):"";
- $phone = isset($_POST['message_phone'])? esc_sql(sanitize_text_field($_POST['message_phone'])):"";
- $message = isset($_POST['message_text'])? esc_sql(sanitize_text_field($_POST['message_text'])):"";
- //We check that the field Email is valid
- if(!is_email($_POST['message_email'])) {
- $reg_errors->add("error", $email_invalid);
- }
- if (empty($_POST['message_name'])) {
- $reg_errors->add("error", $name_required);
- }
- if (empty($_POST['message_phone'])) {
- $reg_errors->add("error", $phone_required);
- }
- if (empty($_POST['message_text'])) {
- $reg_errors->add("error", $text_required);
- }
- $to = get_option('gym_contact_admin_email');
- $name = sanitize_text_field($_POST['message_name']);
- $email = sanitize_email($_POST['message_email']);
- $phone = sanitize_text_field($_POST['message_phone']);
- $message = sanitize_text_field($_POST['message_text']);
- $subject = "Someone sent a message from " . get_bloginfo('name');
- if ( is_wp_error( $reg_errors ) ) {
- if (count($reg_errors->get_error_messages()) > 0) {
- foreach ( $reg_errors->get_error_messages() as $error ) {?>
- <div class="alert alert-danger" role="alert">
- <p><?php echo $error;?></p>
- </div>
- <?php }
- }
- }
- $response = wp_remote_post( "https://www.google.com/recaptcha/api/siteverify", array(
- 'method' => 'POST',
- 'timeout' => 15,
- 'redirection' => 5,
- 'httpversion' => '1.0',
- 'blocking' => true,
- 'headers' => array(),
- 'body' => array(
- 'secret' => '6Ld61NkUAAAAAI0JuA0dp_RL5_T9EucRdgLX2nVj',
- 'response' => esc_attr($_POST['g-recaptcha-response'])),
- 'cookies' => array()
- )
- );
- //We check if we have any kind of error in the connection with google
- if ( is_wp_error( $response ) ) {
- $reg_errors->add( "invalid-captcha", $recaptcha_required );
- } else {
- //If we have connected correctly with google, we check if the answer is true or false
- $g_response = json_decode($response["body"]);
- if ($g_response->success == false) {
- $reg_errors->add( "invalid-captcha", $recaptcha_required );
- }
- }
- $headers = 'From: '. $name . ' <' . $email . '>';
- $sent = wp_mail( $to, $subject, $message, $headers );
- if ($sent){
- $r = array(
- 'name' => $name,
- 'email' => $email,
- 'phone' => $phone,
- 'message' => $message,
- 'time' => current_time( 'mysql' )
- );
- wp_send_json_success($r);
- } else {
- $r = array('message' => 'Mail Error');
- wp_send_json_error($r);
- }
- }
- $r = array('message' => 'Validate Error' );
- wp_send_json_error($r);
- }
- // WordPress Ajax
- add_action( 'wp_ajax_my_contact', 'my_contact_form' );
- add_action( 'wp_ajax_nopriv_my_contact', 'my_contact_form' );
- // On send - works but prob not best practice https://codex.wordpress.org/Plugin_API/Action_Reference/admin_post_(action)
- function gym_contact_create_entry($name, $email, $phone, $message ) {
- global $wpdb;
- $table_name = $wpdb->prefix . 'contact';
- $wpdb->insert(
- $table_name,
- array(
- 'name' => $name,
- 'email' => $email,
- 'phone' => $phone,
- 'message' => $message,
- 'time' => current_time( 'mysql' )
- )
- );
- }
- ?>
- <?php get_header(); ?>
- <script src="https://www.google.com/recaptcha/api.js" async defer></script>
- <div class="container">
- <div class="contact">
- <div class="col-md-6 col-md-offset-3">
- <div class="form-area">
- <div class="text-center contact-h"><?php the_title();?></div>
- <form id="contact-form" action="<?php the_permalink(); ?>" method="post">
- <div class="group form-group">
- <input class="form-control" id="name" type="text" name="message_name" value="<?php if (isset($_POST['message_name'])) { echo esc_attr($_POST['message_name']);} ?>">
- <span class="highlight"></span>
- <span class="bar"></span>
- <label for="name">Name</label>
- </div><!-- end div group form-group -->
- <div class="group form-group">
- <input class="form-control" id="email" type="email" name="message_email" value="<?php if (isset($_POST['message_email'])) { echo esc_attr($_POST['message_email']);} ?>">
- <span class="highlight"></span>
- <span class="bar"></span>
- <label for="message_email">Email</label>
- </div><!-- end div group form-group -->
- <div class="group form-group">
- <input class="form-control" id="phone" type="tel" name="message_phone" value="<?php if (isset($_POST['message_phone'])) { echo esc_attr( $_POST['message_phone']); } ?>">
- <span class="highlight"></span>
- <span class="bar"></span>
- <label for="message_phone">Phone</label>
- </div><!-- end div group form-group -->
- <div class="group form-group">
- <div class="text-group">
- <textarea class="form-control" type="text" name="message_text" rows="4"><?php if (isset($_POST['message_text'])) { echo esc_textarea($_POST['message_text']); } ?></textarea>
- <label for="message_text" class="input-label">Message</label>
- <i class="bar"></i>
- </div><!-- end div text-group -->
- </div><!-- end div group form-group -->
- <div class="g-recaptcha" data-sitekey="6Ld61NkUAAAAAJJ60gH6Ku38xJwj8nzKWbYiaecs"></div>
- <input type="hidden" name="submitted" value="custom_action">
- <?php wp_nonce_field( 'custom_action_nonce', 'gymclub_nonce_field' ); ?>
- <button class="btn btn-primary" id="submit" type="submit" id="gymclub-submit" name="submit">Send</button>
- </form><!-- end form -->
- </div><!--end respond -->
- </div><!-- end div -->
- </div><!-- end div contact -->
- </div><!-- end container -->
- <?php get_footer(); ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement