In this tutorial, I am going to show you how we can implement AJAX in WordPress Child Theme or any WordPress theme with the help of a simple example.
First, Make sure you activated Child Theme on your WordPress site.
Now follow the below steps to implement Ajax in your theme.
Step 1:
We are taking a simple example of the form in Template File to submit through Ajax.
Please look at a simple form with single text input and a block for display output results.
<?php
/*
* Template Name: Example Page Template
*
*/
get_header();
?>
<div id="result_bind">
// WE WILL DISPLAY AJAX RESULT HERE!
</div>
<form id="user_form" class="form form-horizontal" method="post">
<div class="form-group">
<input class="form-control" type="text" id="username" name="username">
</div>
<div class="form-group">
<input type="button" id="submit" class="btn btn-primary" name="submit" value="Submit" >
</div>
</form>
Step 2:
We are in the same PHP file to add more code to send Ajax requests using Javascript/jQuery. Please take a look I am updating the template file code.
<?php
/*
* Template Name: Example Page Template
*
*/
get_header();
?>
<div id="result_bind">
// WE WILL DISPLAY AJAX RESULT HERE!
</div>
<form id="user_form" class="form form-horizontal" method="post">
<div class="form-group">
<input class="form-control" type="text" id="username" name="username">
</div>
<div class="form-group">
<input type="button" id="submit" class="btn btn-primary" name="submit" value="Submit" >
</div>
</form>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" >
$('#submit').click(function(e) {
e.preventDefault();
var username = $('#username').val();
if(username != ''){
var ajaxurl = '<?php echo admin_url( 'admin-ajax.php' );?>';
var data = {
'action': 'my_custom_action',
'username': username
};
$.post(ajaxurl, data, function(response) {
if(response != ''){
$('#result_bind').html(response);
}else{
$('#result_bind').html("No Data Found");
}
}).fail(function(xhr, status, error) {
console.log(status);
console.log(error);
});
}else{
return false;
}
});
</script>
<?php
get_sidebar();
get_footer();
?>
Step 3:
Now we will update the functions.php file of your child theme.
In this file we will use WordPress actions like the below:
add_action(‘wp_ajax_my_custom_action’,’custom_fn_callback’);
The above action hook has 2 arguments. wp_ajax_[here will be the value that is sent with data parameter “action” in code of ajax] so it will be wp_ajax_my_custom_action while the second argument is the callback function which will process the data and send the results back.
If you want to show ajax results for non-logged-in users also for that you can add actions like this
add_action(‘wp_ajax_nopriv_my_custom_action’, ‘custom_fn_callback’);
Here is the final sample code of the functions.php file after adding both action hooks.
add_action('wp_ajax_my_custom_action','custom_fn_callback');
add_action('wp_ajax_nopriv_my_custom_action', 'custom_fn_callback');
function custom_fn_callback() {
$html = '';
if(isset($_POST['username'])){
$username = $_POST['username'];
if (empty($username)){
$html = "Error, You didn\'t enter a user name!";
wp_die();
}
$username = esc_sql($username);
$html = $username;
}
}
echo $html;
wp_die();
}
Step 4:
If you want to test my code then please follow this step:
- Login to your WordPress dashboard
- Add a new page and choose “Ajax Example Page Template“
- Visit the page and see the Magic!
This above code of AJAX in WordPress Child Theme is a core code for beginners…If you want to do more complex code using my method then also you will get your desired result.
Leave a Comment