1. Create folder name wp-content\plugins\"myplugins_shortcode_ajax"
2. Add index.php file wp-content\plugins\myplugins_shortcode_ajax\index.php
3. Add code index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | //index.php <?php /** * Plugin Name: Shortcode ajax * Plugin URI: https://tutorial101.blogspot.com/ * Description: How to add a form to a shortcode in WordPress (using PHP and Ajax) * Version: 1.0 * Author: Cairocoders * Author URI: http://tutorial101.blogspot.com/ **/ $ajaxpostExample = new ajaxpostExample(); class ajaxpostExample { public function __construct() { $this ->attach_actions(); $this ->attach_shortcodes(); } function attach_actions() { add_action( 'wp_ajax_nopriv_ajax_do_something' , array ( $this , 'do_something_serverside' )); add_action( 'wp_ajax_ajax_do_something' , array ( $this , 'do_something_serverside' )); /* notice green_do_something appended to action name of wp_ajax_ */ add_action( 'wp_enqueue_scripts' , array ( $this , 'theme_enqueue_styles' ), 99999); } function theme_enqueue_styles() { //include the js wp_enqueue_script( 'ajaxsample_script' , plugin_dir_url( __FILE__ ) . 'js/ajax_call_to_handle_form_submit.js' , array ( 'jquery' )); wp_enqueue_style( 'handlecss' , plugin_dir_url( __FILE__ ) . 'css/ajaxshortcodestyle.css' ); // in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value // Register the script //wp_localize_script( $handle, $name, $data ); wp_localize_script( 'ajaxsample_script' , 'ajax_object' , array ( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234)); } function do_something_serverside() { global $wpdb ; // output to ajax call $txtname = $_POST [ 'txtname' ]; $txtemail = $_POST [ 'txtemail' ]; $txtsubject = $_POST [ 'txtsubject' ]; $txtmessage = $_POST [ 'txtmessage' ]; if ( $txtname == '' OR $txtemail == '' ){ echo "false" ; } else { echo "true" ; } //insert to a custom database table $wpdb ->insert( "test" , array ( "contactname" => $txtname )); die (); } function attach_shortcodes() { add_shortcode( 'shortcode_ajax_form' , array ( $this , 'shortcode_with_form_code' )); //<p>[shortcode_ajax_form]</p> } function shortcode_with_form_code( $atts , $content = null) { if ( $this ->formOk()) { return " <div>thanks your form has been submitted</div>" ; } else { return $this ->show_form(); } } function show_form() { $form = '<div class = "well" ><div id= "display_rec" ></div> <form id= "green_form" action= "" > Name:<br> <input type= "text" name= "txtname" class = "form-control" value= "" > <br> Email Address:<br> <input type= "text" name= "txtemail" class = "form-control" value= "" > <br> Subject:<br> <input type= "text" name= "txtsubject" class = "form-control" value= "" > <br> Message:<br> <textarea name= "txtmessage" class = "form-control" rows= "5" cols= "25" required= "required" placeholder= "Message" ></textarea> <br> <br> <input type= "submit" class = "btn-primary" value= "Submit" > </form></div>'; return $form ; } function formOk(){ return false; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | jQuery( document ).ready( function () { // Handler for .ready() called. // jQuery( function (){ jQuery( "#green_form" ).submit( function (event){ event.preventDefault(); var formOk = true; // do js validation jQuery.ajax({ url:ajax_object.ajax_url, type: 'POST' , data: jQuery(this).serialize() + "&action=ajax_do_something" , //wp_ajax_nopriv_ajax_do_something, wp_ajax_ajax_do_something success: function (response){ if (response== "true" ){ //alert('success'); jQuery( "#display_rec" ).html( "<div class='success'><p>Message Success Sent</p></div>" ) } else { jQuery( "#display_rec" ).html( "<div class='fail'>Please input required fields.</div>" ) //alert('Please input required fields.'); } } }); }); }); }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | .form-control { display: block; width: 100%; height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.428571429; color: #555; background-color: #fff; background-image: none; border: 1px solid #ccc; border-radius: 4px; transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; } .btn-primary { color: #fff; background-color: #428bca; border-color: #357ebd; } .well { padding: 19px; margin-bottom: 20px; background-color: #428bca; border: 1px solid #357ebd;color:#fff; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05); box-shadow: inset 0 1px 1px rgba(0,0,0,.05); } .success, .fail, .information, .attention { background-repeat: no-repeat; background-position: 10px center; height: 40px; font-size: 11px; line-height: 22px; margin-bottom: 20px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 50px; } /* Succes Notification Box */ .success { background-color: #EBF8D6; border: 1px solid #A6DD88; color: #539B2D; background-image: url(../images/accept00.png); } /* Failure Notification Box */ .fail { background-color: #FFECE6; border: 1px solid #FF936F; color: #842100; background-image: url(../images/delete00.png); } /* Information Notification Box */ .information { background-color: #D3EEF1; border: 1px solid #81CDD8; color: #369CAB; background-image: url(../images/info0000.png); } /* Attention Notification Box */ .attention { background-color: #FFFBCC; border: 1px solid #FFF35E; color: #C69E00; background-image: url(../images/warning0.png); } |